【问题标题】:Django Social Auth (Google OAuth 2) - AuthCancelled even when "Allow access" is clickedDjango Social Auth (Google OAuth 2) - 即使单击“允许访问”也取消了身份验证
【发布时间】:2013-04-18 21:20:39
【问题描述】:

我成功地使用 Django Social Auth 通过 Facebook 登录用户。我正在尝试实现 Google OAuth2。我已经采取了我所知道的所有步骤来集成它,但是即使单击Allow access,我也会收到AuthCanceled at /complete/google-oauth2/ 异常。这是我为集成它所做的:

  • 进入 Google API 控制台,注册我的应用程序并获取我的客户端 ID 和客户端密码。
  • 我添加了正确的返回 URL http://mysite/complete/google-oauth2,在此之前我从 Google 获得了“未经授权的重定向 URL”。
  • 在我的 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 异常?

【问题讨论】:

    标签: django authentication django-socialauth


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-05
        • 1970-01-01
        • 2016-06-05
        • 2012-10-21
        • 1970-01-01
        • 2011-09-08
        • 1970-01-01
        相关资源
        最近更新 更多