DjangoBrothers BLOG ✍️

2022/10/26

このエントリーをはてなブックマークに追加
social-auth-app-django

social-auth-app-djangoで401や403エラーが出たときに確認すること

以前、django-social-auth(social-auth-app-django)でLINE認証を実装しましたがこれと同じ流れでTwitterログイン機能を作ろうとしたところ、401エラーや403エラーに出くわしました。

それぞれの解決に有効だった確認事項を記載しておきます。

401エラー

401 Client Error: Unauthorized for url: https://api.twitter.com/oauth/request_token のエラーが出たときは、SOCIAL_AUTH_TWITTER_KEYSOCIAL_AUTH_TWITTER_SECRETの認証キーが間違えている可能性があります。

OAuth 2.0 Client ID and Client SecretのクライアントIDやクライアントシークレットキーを使うのではなく、Consumer Keysの方のAPIキー、シークレットキーを使う必要があります。ここを間違えて指定していないかを確認します。

また、Callback URIが正しく登録されていない可能性もあります。Twitter Developersの画面で http://127.0.0.1:8000/complete/twitter/ を正しく登録していることを確認しましょう。

403エラー

403 Client Error: Forbidden for url: https://api.twitter.com/1.1/account/verify_credentials.json?include_email=true のエラーが出た場合は、v1.1のAPIへのアクセス権を持っていないことが考えられます。

social-auth-app-djangoは認証時に https://api.twitter.com/1.1/account/verify_credentials.json にリクエストを飛ばしますが、このAPIを使うためにはアクセス権を申請して許可してもらう必要があります。APIのアクセスレベルの表にあるようにElevatedの権限を取得する必要があります。

Twitter Developersの画面から申請し、許可されるのを待ちましょう。権限は申請後に1日ほどで許可されました。