※追記
コメントで教えてもらったのですが、ホワイトリストは
yourapp://
と書けば受け付けてくれました…
@yamasa さん、ありがとうございます
以下は古い内容となります
やり方
- 認証するAndroidアプリが受け取れるリンクに、渡されたlocation.searchをくっつけてlocation.hrefで飛ばすページを作る
- そのURLをTwitterのホワイトリストに登録する
- そのURLを今まで通り認証時にパラメーターで渡す
実装例
コールバック先のページのJavaScript
if (location.search === ""){
//ただ閲覧されたときに移動するページ
location.href="URL";
} else {
//URLに?oauth_verifier=...があった時にアプリに飛ばす
location.href="yourapp://path"+location.search;
}
アプリのマニフェストに設定するintent filter
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="yourapp" />
</intent-filter>
説明
いままでコールバックURLは認証時に自由にパラメーターで渡すことができたため、Androidアプリで独自スキームを設定し、それを捕まえるようにしてoauth_verifierを受け取ることができました。しかし2018-06-12をもってホワイトリストに登録したURL以外を指定できなくなります。
しかし、ホワイトリストにはhttpsで始まるURL以外は入れさせてくれません。
なので、どこか(GitHub Pages等)に、アプリにリダイレクトするページを作りそのURLを設定しました。
もっといいやり方があったら教えて頂けるとありがたいです。
文献
Sign in with Twitter users must whitelist callback URLs - Announcements - Twitter Developers
更新履歴
- 実装例の追加
- 記事先頭に追記