Akata Works

東京エンジニア。主にRuby,Go,たまにAWSとiOS。ゲーム音楽が好きです。連絡はTwitterかakata.onen@gmail.comまで

Twitter OAuthが403 Forbiddenを返すようになったので対応した

2018/06/13夕方頃からコードを変更していないのに急にTwitter OAuth APIが403 Forbiddenを返すようになりました。Twitterにて同じような報告を確認し、調べてみたところ、結構前から言われてたみたいですが、いやー気づかなかったっすね(^ ^ ;)

コールバックロックを有効にしていなくてもCallback URLsに設定済みのcallback_urlパラメータ以外はエラー返すよってことらしいです。変更理由としてはセキュリティのためとか。Enable Callback Lockingの設定項目はそのうち消えるらしいです。

対応策

対応は簡単で、https://apps.twitter.com/のアプリSettingsのCallback URLsに認証時に使うcallback_urlパラメータを設定してやればいいです。

f:id:akatakun:20180614115540p:plain

ちなみに、最低二つ以上設定する必要があります(ちょっと理由はわからなかったです)

f:id:akatakun:20180614115413p:plain

(はじめは出なかったが一度Callback URLsを二つ指定してからはこのエラーが出るようにりました)

また開発環境でテストする際、localhostのCallback URLは指定できませんが、127.0.0.1は指定できます。同様にhttp://localhost:3000でアクセスしたら403エラーが返ってくるのでhttp://127.0.0.1:3000でアクセスする必要があります。


いろいろ見てると「できない」という声が結構ありましたが、僕の場合はこれでいけたのでご参考になれば幸いです。

補足

ワイルドカードは使えない

Callback URLsにはワイルドカードが使えないっぽいので、動的URLを指定することはできないです。その場合は下記みたいにCallback用のページを用意してCookieとか使ってリダイレクトさせればいいんじゃないでしょうか。

なんでワイルドカード指定できねえんだよっ!調べたらちゃんと理由ありました。

参考