Posted at

TwitterKit for Android で Callback URL not approved してしまう

More than 1 year has passed since last update.

See also, iOS での対応方法はこちらを参照: https://qiita.com/nwatabou/items/6a0c891ff3f206cdb8e9


ことのはじまり

先月にアナウンスがあり、つい先日正式に Callback URL のホワイトリスト化が強制となりました。

これに伴って、今まで適当に Callback URL を設定していたり何も設定せずにいても動いていたものが動かなくなります。

https://twitter.com/TwitterAPI/status/1006635008692350977


正しく設定しないとどうなるか

正しく設定していないアプリで TwitterKit for Android を使うと、Twitter 公式アプリがない状態で認証・認可のフローにはいるとCallback URL not approvedというようなエラーが403で返ってきます(Twitter 公式アプリがインストールされている場合はそちらが認証・認可のフローを担うため問題なく動作します)。

ただし TwitterKit for Android では特に Callback URL をクライアント側から指定する必要はないため、うっかりしていると「急に Twitter にログインできなくなった」というような状態になってしまいます。

公式のドキュメントにもとくに言及がないため、TwitterKit for Androidを使った場合の「正しい Callback URL」とは何か不明瞭な状態です。


正しい値

結論から言うと、Twitter アプリの設定画面で次の値を Callback URL に設定するのが正しいです。

twittersdk://

iOS やその他 Web アプリ向けの Callback URL の設定とは異なることに注意してください。Callback URL は複数登録ができるので、他のプラットフォーム向けの Callback URL と一緒に Android 用の設定も追加してください。

TwitterKit for Android のクライアント側がコード上で Callback URL を特に指定する必要はないとはいえ、実際にはライブラリ内で定数として使われています。

https://github.com/twitter/twitter-kit-android/blob/d71efe38404b5233e312f2531efbf72e5ce5d7bc/twitter-core/src/main/java/com/twitter/sdk/android/core/internal/oauth/OAuth1aService.java#L59

TwitterKit for Android の wiki にも適当な Callback URL を設定すれば良い旨の記述がありますが、先日のホワイトリスト化の強制に伴って、twittersdk://でなければなくなったということです。


参考

https://github.com/twitter/twitter-kit-android/issues/135