2022/10/26
social-auth-app-djangosocial-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_KEYやSOCIAL_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日ほどで許可されました。