[Twitter API] OAuthのCallback URLホワイトリスト化に対応する

概要

2018/06/12よりTwitter OAuthのCallback URL関係で変更がありました。
この変更に伴い、以下のようなエラーが発生するようになりました。

code: 415
Callback URL not approved for this client application. Approved callback URLs can be adjusted in your application settings.

変更内容はCallback URLs — Twitter Developersに書いてあるんですが、変更後は

みたいです。
また、次のような場合には注意してください。

Callback URLにクエリ文字列を使用したい場合

例えばCallback URLに『https://yourdomain.com?source=twitter』と設定したい場合は、次のようにします。

  1. developer.twitter.com/en/appsのCallback URL設定に『https://yourdomain.com』と登録
  2. POST oauth/request_tokenのcallback_url(oauth_callback)パラメータを『https://yourdomain.com?source=twitter』と指定

Callback URLにlocalhostを使用したい場合

developer.twitter.com/en/appsのCallback URL設定はホスト名が『localhost』だと登録できません。
代わりに、次のいずれかの方法で登録します。

いずれの方法でもポート番号を指定することができるようです(例: http://127.0.0.1:2000)

Callback URLにモバイルアプリへのリンクを設定したい場合

例えばCallback URLに『example://authorize』と設定したい場合は、次のようにします。

  1. developer.twitter.com/en/appsのCallback URL設定に『example://』と登録
  2. POST oauth/request_tokenのcallback_url(oauth_callback)パラメータを『example://authorize』と指定

Twitter Kitを使用している場合

Twitter Kitを使用している場合、冒頭のエラーまたは以下のエラーが発生する場合があります。

Failed to get request token

その場合、developer.twitter.com/en/appsのCallback URL設定を以下のように登録します。

twittersdk://

twitterkit-{アプリのCONSUMERKEY}://

Callback URL設定数が上限に達した場合

developer.twitter.com/en/appsで登録できるCallback URLの数には10個という上限があります。
その上限に達した場合は、Callback URLを単一のアドレスにまとめてPOST oauth/request_tokenでクエリ文字列を使用してください、とのことですたぶん。
自信が無いので引用しておきます。

Need more than 10 callback URLs?
There is a hard limit of 10 callback URLs in the Twitter apps dashboard. Please make sure to combine your callback URLs into a single address and use query strings in your oauth/request_token request.

Callback URLs — Twitter Developers