【问题标题】:HTTPError 403 (Forbidden) with Django and python-social-auth connecting to Google with OAuth2HTTPError 403(禁止),Django 和 python-social-auth 使用 OAuth2 连接到 Google
【发布时间】:2014-06-24 02:37:52
【问题描述】:

使用python-social-auth,我在接受来自google 的访问后收到403: Forbiden 错误消息

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

【问题讨论】:

    标签: python django oauth-2.0 google-api


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您回来回答
    • 哇,werkzeug 指针的巨大 +1。一个全新的调试世界向我打开了......
    • 你救了我一天。即使我只使用 oauth2,我也必须启用 Google+ API。
    • 我仍然有这样的问题。当我为一个域(john@doe.com)获得 403 并为另一个域(doe@john.com)授予时。我已经在上面启用了 Google+ API。有什么想法吗?
    • @jpklzm 仍然抛出此错误的是否有可能是 Google Apps for Education 帐户? (意识到您发表评论已经有一段时间了。)例如,k12.xx.us 或 .edu 域。我想这就是我所看到的,但没有足够的数据来证实。理论:即使启用了 Google+ API,如果 Google Apps 管理员为其域用户禁用了 Google+,您也会收到此错误。 (或类似的东西。)
    【解决方案2】:

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

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

    希望这有助于一路走来。总而言之,花了大约6个小时才弄清楚。还不错,我很开心。

    【讨论】:

    • 该死的。谢谢你。非常。我已经做了必要的事情,但它仍然没有工作。我所要做的就是等待大约 5 分钟,神奇的是,它起作用了。
    • 如有疑问,请等待 5 分钟!一定喜欢异步网络传播。
    【解决方案3】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2013-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多