带有Django和python-social-auth并通过OAuth2连接到Google的HTTPError 403(禁止)


75

使用python-social-auth,我403: Forbiden接受Google的访问权限后收到错误消息

编辑:我最近(2017年)有相同的错误,但根据一条新消息: 401 Client Error: Unauthorized for url: https://accounts.google.com/o/oauth2/token

Answers:


130

这个答案已经过时,因为Google+ API将于19年3月7日弃用

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

注意:如果要查看真正的错误消息,请使用追溯功能查看response变量(response.text)的内容。我为此使用werkzeug(django-extensions+ python manage.py runserver_plus)。


3
感谢您返回答案
StringsOnFire 2014年

1
哇,werkzeug指针大+1。调试的全新世界已经打开了……
mgalgs 2014年

1
你救了我一天。即使我仅使用oauth2,也必须启用Google+ API。
schemacs 2014年

我仍然有这样的问题。当我为一个域(john@doe.com)获得403并为另一个域(doe@john.com)授予许可时。我已经启用了Google+ API。任何想法?
jpklzm

@jpklzm还有机会抛出此错误的人是Google Apps for Education帐户吗?(请注意,距您的评论已经有一段时间了。)例如,一个k12.xx.us或.edu域。我认为这就是我所看到的,但是没有足够的数据来确认。理论:即使启用了Google+ API,如果Google Apps管理员为其域用户禁用了Google+,您也会收到此错误。(或类似的内容。)
medmunds 2015年

14

还要感谢。我使用的是art and logic的python-social-auth教程,但在/ complete / google-oauth2 /上无法通过403:Forbidden HTTPError,直到如上所述启用Google+ API并等待几分钟,以便Google启用它

另外,我必须将模板放置在模板目录中,并 TEMPLATE_DIRS = ('/path/to/psa_test/thirdauth/templates/',)在settings.py中进行设置。

希望这可以对某人有所帮助。总共花了大约6个小时才弄清楚。还不错,我很高兴。


3
该死的。谢谢。非常。我已经做了必要的事情,但是仍然没有用。我所要做的就是等待大约5分钟,然后魔术开始起作用了。
janos 2015年

1
如有疑问,请等待5分钟!要爱异步网络传播。
Michael Butler

2

对我来说,我使用的是Google从2014年9月1日起已弃用的full-URI范围,这在python-social-auth文档中已提及

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

Google自2014年9月1日起弃用完整网址范围,转而使用Google+ API和最近引入的较短范围名称。但是python-social-auth已经在e3525187引入了范围更改,该版本在v0.1.24发布。

但是,如果您出于任何原因不想启用Google+ API,并希望继续使用完整的uri旧范围,则需要执行同一链接中提到的步骤:

# 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。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.