記事内に商品プロモーションが含まれる場合があります
開発メモです。2018年6月〜Twitter認証の仕様変更により、コールバックURLの指定によっては、エラーが出てしまう現象が起こるようです。
個人的にローカルで開発していたRailsアプリ(deviseのTwitter認証)で、Twitterログインしようとすると、突然以下のようなエラーが表示されるようになっていました。
OAuth::Unauthorized
403 Forbidden
self.token_request(http_method, uri.path, token, request_options, arguments)
when (400..499)
raise OAuth::Unauthorized, response
else
response.error!
end
原因
TwitterのAPIの仕様変更によるものでした。Settingで任意選択だった「Callback URL Lock」という項目がデフォルトでONになったようです。
Experiencing momentary disruptions?
— Twitter API (@TwitterAPI) 2018年6月7日
This means you have not enabled whitelisting for your callback URLs. Be sure to follow our guidance on how to make these changes by June 12th or your callback URLs will fail. See our May forum post for guidance. https://t.co/uWBvhX30E6
「Callback URLs」の変更で解決
development環境
僕の場合(ローカル開発環境)では、Twitter AppsのSettingで、「Callback URLs」に以下の2つを追加することで、エラーが解消されました。
- http://127.0.0.1:3000/auth/twitter/callback
- http://localhost:3000/auth/twitter/callback
※ /auth/twitter/callback
ではなく/user/auth/twitter/callback
などの場合もあると思います。rails routes
コマンドで「user_twitter_omniauth_callbacks」のルーティングを確認するのが良いですね。
Production環境の場合
stackoverflowでは、本番環境の場合「Callback URLs」に以下のようなURLを追加することで解決したという報告が挙がっていました。
- https://ドメイン/auth/twitter/callback
- http://ドメイン/auth/twitter/callback
※ こちらも/user/auth/twitter/callback
などとなっている場合があるので、うまくいかない場合はルーティングを要確認。