Twitter OAuth認証のコールバックで自分のアプリに制御が戻ってくれない
というハマりがあったのでメモ。
Twitterアプリ登録ページで、
コールバックURLはhttp://かhttps://で始まらなければならない、と書いてあるので
最初、存在しないURLや存在するURLを色々試したが、
intent-filterが反応しなかった。
実際には、コールバックURLは
”独自スキーマ://”
という構文でも登録を受け付けてくれる。
Callback URL
zanapp://
次に、
AndroidManifest.xmlのandroid:hostとコールバックURLのhostが
両方とも無し、
という設定で試したが、やはり反応しない。
そこで、
アプリのソースコードで、
コールバックURLのスキーマにホスト(test)を付けてみた。
(AndroidManifest.xmlのandroid:hostとコールバックURLのhostが
両方ともあり、の設定。)
TwitterOAuthActivity.java
mRequestToken = mTwitter.getOAuthRequestToken(zanapp://test);
AndroidManifest.xml
<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:host="test"
android:scheme="zanapp" />
</intent-filter>
これでブラウザのTwitter認証からのコールバックで
アプリに制御が戻る ようになった。
独自スキーマじゃないとintent-filterが反応しない???
原因がよく分かりません。