【问题标题】:django-social-auth backend not found找不到 django-social-auth 后端
【发布时间】:2013-03-02 01:04:53
【问题描述】:

我正在尝试使用django-social-auth 向 Twitter、GitHub、Google 和 Facebook 添加身份验证,但我期望的后端不可用。

按照说明书安装:

AUTHENTICATION_BACKENDS = (
    'social_auth.backends.twitter.TwitterBackend',
    'social_auth.backends.contrib.github.GithubBackend',
    'social_auth.backends.facebook.FacebookBackend',
    'social_auth.backends.google.GoogleOAuthBackend',
    'social_auth.backends.google.GoogleOAuth2Backend',
    'social_auth.backends.google.GoogleBackend',
    # ....unnecessary backends

    'guardian.backends.ObjectPermissionBackend',
    'django.contrib.auth.backends.ModelBackend',
)

TWITTER_CONSUMER_KEY         = ''
TWITTER_CONSUMER_SECRET      = ''
FACEBOOK_APP_ID = ''
FACEBOOK_APP_SECRET = ''
GOOGLE_CONSUMER_KEY          = ''
GOOGLE_CONSUMER_SECRET       = ''
GOOGLE_OAUTH2_CLIENT_ID      = ''
GOOGLE_OAUTH2_CLIENT_SECRET  = ''

LOGIN_URL          = '/login/'
LOGIN_REDIRECT_URL = '/'
LOGIN_ERROR_URL    = '/login/'

SOCIAL_AUTH_FORCE_POST_DISCONNECT = True
SOCIAL_AUTH_FIELDS_STORED_IN_SESSION = ['next',]

在模板中添加了 URL:{% url socialauth_begin 'twitter' %}, {% url socialauth_begin 'github' %} etc,直到这里一切正常。

但是当我点击链接时 - 它给了我错误:Incorrect authentication service "twitter"

根据手册,我检查了social_auth.backends.BACKENDS 的内容,它只有这个:{'openid': <class 'social_auth.backends.OpenIdAuth'>}

为什么我启用的后端不存在,以及为什么有一个我实际上没有启用的后端?

PS:python 2.7.3、django 1.4.5、django-social-auth 0.7.19

【问题讨论】:

  • 你有没有查看 twitter 关于这个Incorrect authentication service "twitter" 的错误文档。在该文档中,它说明了该错误的含义
  • 在这里检查django-social-auth.readthedocs.org/en/latest/… 它说的是:WrongBackend - Raised when the backend given in the URLs is invalid (not enabled or registered)。 AFAIK 它已注册并已启用。
  • 表示后端发送的url无效,不是后端未找到。你完成要求了吗?您是否在 Twitter 中创建了一个应用程序并获得了密钥?您必须将该密钥放入您的设置中。
  • 我很惭愧。没错,它需要 twitter KEY 一个 SECRET 来填写,然后它就可以工作了。但是该死的,为什么它会给出如此不明显和误导性的错误信息呢?无论如何,问题已回答,我想其他后端也有同样的问题。

标签: django python-2.7 django-socialauth


【解决方案1】:

如果有人会像我一样愚蠢地碰到这个错误消息。 您只需要来自身份验证提供商、twitter、google 等的 KEY 和 SECRET。它在错误消息中没有说明这一点,但这就是它失败的原因。

【讨论】:

  • docs里明确写着,需要填写消费者密钥和秘密。
  • 显然需要这两项填写才能操作。但并没有说填充这些值就像整个 Twitter 后端的启用/禁用开关一样,这对我来说本身并不明显。
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 2019-10-24
  • 1970-01-01
  • 2018-10-26
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多