【Ruby on Rails】突然Twitter認証で「OAuth::Unauthorized 403 Forbidden」エラーが出るようになった
今回の問題
Devise+Omniauthを使ってTwitter認証をしているサービスをHerokuにホストしていて今まで問題なく動いていたのですが突然
OAuth::Unauthorized (403 Forbidden)
というエラーを吐いて動かなくなった。
解決法
これまでCallback URLsは適当なURLを設定していても動作しましたが、TwitterAPIの仕様変更があったらしいです。
Callback URLsをTwitterAppsで設定しているコールバックURLと、リクエストで送るコールバックURLのパラメータを同じにすると動くようになるそうです。
https://ドメイン/users/auth/twitter/で認証する場合、Callback URLsを
https://ドメイン/users/auth/twitter/callback
に設定することで今まで通り動くようになります。
ローカル環境でもエラーを回避したい場合
http://localhost:3000/users/auth/twitter/callback
を設定することで回避できます。
参考
Experiencing momentary disruptions?
— Twitter API (@TwitterAPI) June 7, 2018
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