まず、私が取り組んでいることを説明しましょう...
(1)Twitter Developersサイトにアプリを登録し、OAuthクレデンシャル(コンシューマーキー、コンシューマーシークレット、リクエストトークンURLなど)を取得しました。ここに「callback:// tweeter」(およびその他の非Http Urls)としてコールバックURLを入力しようとしましたが、ページの検証に失敗し、「無効なURL形式です」というエラーメッセージが表示されるため、これを空白のままにしました。
(2)次に、OAuthクレデンシャルと空のコールバックURLを使用して「CommonsHttpOAuthConsumer」オブジェクトと「OAuthProvider」オブジェクトを設定し、次のようにWebアクティビティを開始しました。
CommonsHttpOAuthConsumer consumer = new
CommonsHttpOAuthConsumer(myTwitterConsumerKey,
myTwitterConsumerSecret);
OAuthProvider provider = new
DefaultOAuthProvider(myTwitterRequestTokenUrl,
myTwitterAccessTokenUrl, myTwitterAuthorizeUrl);
String authUrl =
provider.retrieveRequestToken(consumer, "");
startActivity(new
Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)));
(3)次に、(アプリから)起動されてTwitterアカウントにサインインした(そして、アプリが自分のTwitterアカウントにアクセスすることを許可したことを確認した)Webアクティビティを追跡しました。
(4)最後に、リクエストを送信すると、(まだWebアクティビティ内にある)ページにリダイレクトされ、アプリにTwitterアカウントへのアクセスを許可し、必要に応じて入力するためのピンを与えたことを祝福しました。
もちろん、承認が成功すると、アプリ(Webアクティビティを起動したアクティビティ)にリダイレクトされ、そこで承認を処理します。
私はたくさんのことを試しましたが(以下に説明するカップル)、毎回不足していて、アイデアに固執しています。誰かが私を助けてくれて、私が間違っていることを知らせてくれれば、私はお世話になります!
これが私が試した2つの主なことです:
(1)コードのCallback Urlを「callback:// tweeter」に設定しようとしましたが(アプリのTwitter登録OAuth設定では空白ですが)、今回は次のメソッド呼び出しを行います...
provider.retrieveRequestToken(consumer, "callback://tweeter");
... OAuthCommunicationExceptionがスローされます(「サービスプロバイダーとの通信に失敗しました...」というメッセージが含まれています)。
(2)アプリのTwitter登録OAuth設定でコールバックURLをHttp Url( "http://myhost.com"など)に設定し、アクティビティマニフェストでインテントフィルターを指定して、次のようにコールバックをキャプチャしようとしました。 。
<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="http" android:host="myhost.com" />
</intent-filter>
...しかし、承認が成功すると、アクティビティに戻るのではなく、Webアクティビティ(インターネットブラウザ)内でmyhost.comにリダイレクトされます。