3

まず、私が取り組んでいることを説明しましょう...

(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にリダイレクトされます。

4

3 に答える 3

3

私のTwitterチュートリアルで答えを見つけてよかった:http ://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-t54389.html

他の人のために:

「callback:/// tweeter」(つまり、3つのスラッシュ)であるはずのコールバックURLを「callback:// tweeter」(2つのスラッシュ)として指定していました。


実際、単純化するために、それは「callback:///」である必要があるだけであり、インテントフィルターデータノードは単純に次のようになります。

 <data android:scheme="callback"/>

別のアプリがそれを使用した場合、あなたのアプリがそれを拾い上げ、すべての地獄が解き放たれることを覚えておく必要があるので、単純化することはお勧めしません!

于 2011-12-23T11:16:59.250 に答える
2

私はこれと同じ問題を抱えていました。私の問題を解決したのは、マニフェストでインテントフィルタを設定するときに、android:schemeで使用する名前がすべて小文字で、アンダースコアがないことを確認することでした。ただし、ダッシュは次のように問題ありません。

<data android:scheme="your-callback-here" />

私が新しい開発者として偶然見つけたものです!

于 2013-01-11T04:50:35.937 に答える
0

アプリケーションへのリダイレクトに詰め込まれている可能性があります

この方法で解決してみてくださいコールバックURLを間違って入力した場合、アプリケーションに戻ることができません

Twitterで作成したアプリのコールバックURLに配置する必要があります:http ://twitter.com/oauth/authorize?oauth_token = actualtokenhere&oauth_callback = myapp:///

それはうまくいけばあなたのために働くでしょう:)

于 2016-06-15T13:13:11.970 に答える