使用 Django 和 python-social-auth 以 OAuth2连接 Google 的 HTTPError 403(禁用)

使用 python-social-auth,我得到一个从谷歌接受访问后的 403: Forbiden错误消息

编辑: 我最近(2017)出现了同样的错误,但是在一条新的消息下: < code > 401 Client Error: unauthority for url: https://accounts.google.com/o/oauth2/token

13794 次浏览

这个答案已经过时了,因为 Google + API 在3/7/19已经过时了

您需要将 Google+ API添加到 GoogleDeveloperConsole (在 APIs下)上已启用的 API 列表中

注意: 如果希望看到真正的错误消息,请使用回溯查看 response变量(response.text)的内容。我使用 werkzeug (django-extensions + python manage.py runserver_plus)。

也谢谢你。我正在使用这个 Python-通过艺术和逻辑进行社会认证教程,但是在启用如上面的 等待几分钟,等待谷歌启动它那样的 Google + API 之前,无法通过/complete/Google-oauth2/的403: 禁用 HTTPError。

此外,我必须将模板放在模板目录中并设置 在设置中。

希望这能帮到别人。总的来说,花了6个小时才弄明白。还不错,我很开心。

对我来说,我使用的是从2014年9月1日起被 Google 弃用的 full-URI 作用域,这在 python-social-auth 文档中有提到

Http://psa.matiasaguirre.net/docs/backends/google.html#google-oauth2

Google 不再支持从2014年9月1日开始的全 URL 作用域,转而支持 Google + API 和最近推出的较短的作用域名称。但是 python-social-auth 已经在 e3525187引入了范围更改,该更改在 v0.1.24发布。

但是,如果你不想启用 Google + API,而想继续使用全新的作用域,你需要按照同一链接中提到的步骤:

# Google OAuth2 (google-oauth2)
SOCIAL_AUTH_GOOGLE_OAUTH2_IGNORE_DEFAULT_SCOPE = True
SOCIAL_AUTH_GOOGLE_OAUTH2_SCOPE = [
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'
]


# Google+ SignIn (google-plus)
SOCIAL_AUTH_GOOGLE_PLUS_IGNORE_DEFAULT_SCOPE = True
SOCIAL_AUTH_GOOGLE_PLUS_SCOPE = [
'https://www.googleapis.com/auth/plus.login',
'https://www.googleapis.com/auth/userinfo.email',
'https://www.googleapis.com/auth/userinfo.profile'
]


SOCIAL_AUTH_GOOGLE_OAUTH2_USE_DEPRECATED_API = True
SOCIAL_AUTH_GOOGLE_PLUS_USE_DEPRECATED_API = True

这对我很有用,因为我不想在这个时候启用 Google + API。