Django社交认证(Google OAuth 2)-即使点击了“允许访问”也会取消认证

eiee3dmh  于 2022-12-05  发布在  Go
关注(0)|答案(3)|浏览(150)

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

  • 进入Google API控制台,注册我的应用程序,并获得我的客户端ID和客户端密码。
  • 我添加了正确的返回网址http://mysite/complete/google-oauth2,在我这样做之前,我得到了“未经授权的重定向网址”从谷歌。
  • 在我的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登录工作,我能够显示窗口,查看我的应用程序名称在谷歌授权窗口等。

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

pgpifvop

pgpifvop1#

该问题似乎是由Google的一种奇怪行为引起的:当我最初创建我的客户ID时,google给了我这个客户ID:193271111225.apps.googleusercontent.com。在与库作者交谈后,他告诉我他的ID要长得多,所以我用完全相同的设置创建了一个新的客户端ID。生成的新ID是193271111225-cvltnldi4hh5lmo784v2ir451b3rij7e.apps.googleusercontent.com,使用它可以工作。两个ID在控制台中看起来是一样的,但只有后者可以工作。

mbjcgjjk

mbjcgjjk2#

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

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

iswrvxsc3#

当我尝试使用social-auth-app-django库进行社会身份验证时,我也遇到了同样的错误。

AuthCanceled at /social-auth/complete/google-oauth2/

两个愚蠢的错误导致了这个错误。
1.未在Web应用程序的客户端ID中定义重定向授权重定向URI。(将其设置为http://localhost:8000/social-auth/complete/google-oauth2/)

  1. SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET的拼写错误
    因此,如果您收到相同的错误,请确保定义了重定向授权URI并检查拼写。

相关问题