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

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

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

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

注意:如果你想看到真正的错误信息,使用traceback来查看responsevariables( response.text )的内容。 我使用werkzeug( django-extensions + python manage.py runserver_plus )。

还要感谢。 我是通过艺术和逻辑来使用这个python-social-auth教程的 ,但是无法通过/ complete / google-oauth2 /上的403:Forbidden HTTPError直到启用上面的Google+ API ,等待几分钟让Google启用它

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

希望这可以帮助一路上的人。 总而言之,花费大约6个小时才能搞清楚。 不错,我很高兴。

对我来说,我使用的是2014年9月1日起由Google弃用的完整URI范围,在python-social-auth文档中提到了这个范围

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

Google从2014年9月1日起弃用全url范围,转而使用Google+ API和最近推出的较短范围名称。 但是python-social-auth已经在v0.1.24上发布了e3525187的范围变更。

但是,如果您不希望因任何原因启用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。