Django Social Auth(Google OAuth 2) - 即使单击“允许访问”,也会进行AuthCancelled

时间:2013-04-18 21:20:40

标签: django authentication django-socialauth

我成功使用Django Social Auth登录Facebook用户。我正在尝试实施Google OAuth2。我已经采取了我所知道的所有步骤进行集成,但即使单击AuthCanceled at /complete/google-oauth2/,我也会收到Allow access异常。以下是我整合它的方法:

  • 去了Google API控制台,注册了我的应用程序并获得了我的客户端ID和客户端密钥。
  • 我添加了正确的返回网址http://mysite/complete/google-oauth2,在此之前我收到了Google的“未经授权的重定向网址”。
  • 在我的settings.py中,我有

    GOOGLE_OAUTH2_CLIENT_ID = '*****'
    GOOGLE_OAUTH2_CLIENT_SECRET = '*****'
    
    AUTHENTICATION_BACKENDS = (
        'social_auth.backends.google.GoogleOAuth2Backend',
        'social_auth.backends.facebook.FacebookBackend',
        'django.contrib.auth.backends.ModelBackend',
    )
    
  • 我想其他相关设置正确,因为Facebook登录正常,我可以显示窗口,在Google授权窗口中查看我的应用名称等。

我做错了吗?如何修复/调试AuthCancelled异常?

2 个答案:

答案 0 :(得分:3)

这个问题似乎是由一个奇怪的Google行为引起的:当我最初创建我的客户端ID时,谷歌给了我这个客户端ID:193271111225.apps.googleusercontent.com。在与图书馆作者交谈后,他告诉我他的ID要长得多,所以我创建了一个具有完全相同设置的新客户端ID。生成的新ID是193271111225-cvltnldi4hh5lmo784v2ir451b3rij7e.apps.googleusercontent.com,随之而来的是它的工作原理。两个ID在控制台中看起来都一样,但只有后者有效。

答案 1 :(得分:1)

使用SocialAuthExceptionMiddleware中间件正确处理social_auth异常

MIDDLEWARE_CLASSES = (
    ...,
    'social_auth.middleware.SocialAuthExceptionMiddleware'
)