LoginSignup
14
5

More than 5 years have passed since last update.

Androidアプリでの連携認証でTwitter OAuth callback URLのホワイリスト化に対応する

Last updated at Posted at 2018-05-17

※追記

コメントで教えてもらったのですが、ホワイトリストは
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

更新履歴

  • 実装例の追加
  • 記事先頭に追記
14
5
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5