【问题标题】:In django-social-auth, can't get the Facebook authentication link to show?在 django-social-auth 中,无法显示 Facebook 身份验证链接?
【发布时间】:2023-03-10 15:36:01
【问题描述】:

我已经安装了 django-social-auth。

除了身份验证选项列表中仅显示随机身份验证链接外,它似乎有效。在oAuth列表中,我只能看到:

  • Google-Oauth
  • 领英
  • Github
  • Orkut

我正在尝试让 Facebook 身份验证正常工作。

这是我与 django-social-auth 相关的设置:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
)



INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    'django.contrib.admindocs',
    'south',
    'appMain',
    'social_auth',
)



AUTHENTICATION_BACKENDS = (
    'social_auth.backends.twitter.TwitterBackend',
    'social_auth.backends.facebook.FacebookBackend',
    'social_auth.backends.google.GoogleOAuthBackend',
    'social_auth.backends.google.GoogleOAuth2Backend',
    'social_auth.backends.google.GoogleBackend',
    'social_auth.backends.yahoo.YahooBackend',
    'social_auth.backends.contrib.linkedin.LinkedinBackend',
    'social_auth.backends.contrib.flickr.FlickrBackend',
    'social_auth.backends.OpenIDBackend',
    'social_auth.backends.contrib.livejournal.LiveJournalBackend',
    'django.contrib.auth.backends.ModelBackend',
)


TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.contrib.messages.context_processors.messages',
    'social_auth.context_processors.social_auth_by_type_backends',
)

# SOCIAL_AUTH_ENABLED_BACKENDS = ('google', 'google-oauth', 'twitter', 'facebook',)

LOGIN_URL = '/login-form/'
LOGIN_REDIRECT_URL = '/logged-in/'
LOGIN_ERROR_URL = '/login-error/'

SOCIAL_AUTH_COMPLETE_URL_NAME  = 'socialauth_complete'
SOCIAL_AUTH_ASSOCIATE_URL_NAME = 'socialauth_associate_complete'

TWITTER_CONSUMER_KEY              = ''
TWITTER_CONSUMER_SECRET           = ''
FACEBOOK_APP_ID                   = '126197457491070'
FACEBOOK_APP_SECRET               = '2ed91326e1a7c88db7358727856877dc'
LINKEDIN_CONSUMER_KEY             = ''
LINKEDIN_CONSUMER_SECRET          = ''
ORKUT_CONSUMER_KEY                = ''
ORKUT_CONSUMER_SECRET             = ''
GOOGLE_OAUTH2_CLIENT_ID           = ''
GOOGLE_OAUTH2_CLIENT_SECRET       = ''
SOCIAL_AUTH_CREATE_USERS          = True
SOCIAL_AUTH_FORCE_RANDOM_USERNAME = False
SOCIAL_AUTH_DEFAULT_USERNAME      = 'socialauth_user'
SOCIAL_AUTH_COMPLETE_URL_NAME     = 'socialauth_complete'
LOGIN_ERROR_URL                   = '/login/error/'
#SOCIAL_AUTH_USER_MODEL            = 'upfoMain.CustomUser'
SOCIAL_AUTH_ERROR_KEY             = 'socialauth_error'
GITHUB_APP_ID                     = ''
GITHUB_API_SECRET                 = ''
FOURSQUARE_CONSUMER_KEY           = ''
FOURSQUARE_CONSUMER_SECRET        = ''

我已多次检查所有设置。我真的看不出有什么遗漏,所以我想知道问题可能出在哪里?

在前端模板中,代码为(直接来自django-social-auth示例):

<div>
  <h3>Login using <a href="http://oauth.net/" title="OAuth">OAuth</a> from:</h3>
  <ul>
  {% for name in social_auth.backends.oauth %}
    <li><a rel="nofollow" href="{% url socialauth_begin name %}">{{ name|title }}</a></li>
  {% endfor %}
  </ul>
</div>

【问题讨论】:

    标签: django facebook socialauth


    【解决方案1】:

    我找到了问题,但我不确定为什么会这样:

    在 Facebook 设置中,app_secret 被称为“App secret”。如此快速地浏览,我已经定义了“APP_SECRET”。我想我实际上是从另一个应用程序复制的。但是,在代码中,App secret 被定义为“API_SECRET”。所以只要改变它,它就可以工作。也许这对某人有用。

    【讨论】:

      【解决方案2】:

      Facebook 使用 OAuth2,所以它会在 social_auth.backends.oauth2 键下,试试这个 sn-p:

      {% for name in social_auth.backends.oauth2 %}
          <li><a rel="nofollow" href="{% url socialauth_begin name %}">{{ name|title }}</a></li>
      {% endfor %}
      

      我希望这些不是你真正的 Facebook APP_ID 和 APP_SECRET

      【讨论】:

      • 我也有那个代码。不幸的是仍然没有显示。在示例页面 social.matiasaguirre.net Facebook 上显示为 oauth,而不是 oauth2(尽管这显然不是同一个版本。)
      • 是的,不是同一个版本...但是;)
      猜你喜欢
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多