HTTPError 403(Forbidden),Django和python-social-auth通过OAuth2连接到Google

时间:2014-06-24 02:37:53

标签: python django oauth-2.0 google-api

使用python-social-auth,我在接受谷歌访问后收到403: Forbiden错误消息

编辑:我最近(2017年)遇到了同样的错误,但是在新消息下:401 Client Error: Unauthorized for url: https://accounts.google.com/o/oauth2/token

3 个答案:

答案 0 :(得分:131)

此答案已过时,因为Google+ API已于3月7日弃用

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

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

答案 1 :(得分:15)

也谢谢。我正在使用此python-social-auth tutorial by art and logic,但在/ strong / google-oauth2 /之前无法通过403:Forbidden HTTPError,直到启用上面的 Google+ API并等待Google启用几分钟它

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

希望这可以帮助一路上的人。总而言之,它花了大约6个小时来弄明白。还不错,我很高兴。

答案 2 :(得分:2)

对我来说,我使用的是2014年9月1日Google弃用的完整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并希望继续使用完整版本的旧版本,则需要按照相同链接中提到的步骤操作:

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