web-dev-qa-db-ja.com

HTTPError 403(禁止)DjangoおよびOAuth2でGoogleに接続するpython-social-auth

python-social-authを使用すると、Googleからのアクセスを受け入れた後に403: Forbidenエラーメッセージが表示されます

編集:私は最近(2017)同じエラーが発生しましたが、新しいメッセージの下で:401 Client Error: Unauthorized for url: https://accounts.google.com/o/oauth2/token

76
damio

Google+ APIは3/7/19に廃止されるため、この回答は時代遅れです

Google+ API をGoogle Developer Consoleの有効なAPIのリストに追加する必要があります(APIsの下)

注:実際のエラーメッセージを表示する場合は、トレースバックを使用してresponse変数(response.text)の内容を確認してください。そのためにwerkzeugを使用します(Django-extensions + python manage.py runserver_plus)。

131
damio

またありがとう。私はこれを使用していました アートとロジックによるpython-social-authチュートリアル 、しかし、上記のGoogle+ APIを有効にするまで/ complete/google-oauth2 /で403:Forbidden HTTPErrorを通過できませんでした、Googleが有効にするのを数分間待ちます

さらに、テンプレートをテンプレートディレクトリに配置し、TEMPLATE_DIRS = ('/path/to/psa_test/thirdauth/templates/',) in settings.pyを設定する必要がありました。

これが途中で誰かを助けることを願っています。全体として、それを理解するのに約6時間かかります。悪くない、嬉しい。

15
Chris McGinlay

私にとっては、2014年9月1日にGoogleによって廃止された完全なURIスコープを使用していました。これは、python-social-authのドキュメントに記載されています。

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

Googleは、Google + APIと最近導入されたより短いスコープ名を支持して、2014年9月1日からフルURLスコープを廃止します。しかし、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を有効にしたくなかったので、これはうまくいきました。

2
hshafy