2011-12-22 11 views
3

まずオフにリダイレクト私が働いているかを説明できるように成功したTwitterのログインを(Twitter4Jライブラリを使用して)取得できませんは...戻って私のAndroidアプリ

(1)私はTwitterの上で私のアプリを登録しましたデベロッパーサイトにはいくつかのOAuth資格情報(コンシューマーキー、コンシューマーシークレット、リクエストトークンURLなど)があります。 コールバックURLをコールバック:// tweeter(およびその他のHTTP以外のURL)として入力しましたが、ページの検証に失敗し、「有効なURLフォーマットではありません」というエラーメッセージが表示されます。

(2)次に、私は私のOAuthの資格情報と空のコールバックURLに私の 'CommonsHttpOAuthConsumer' と 'OAuthProvider' オブジェクトを設定し、次のようにウェブの活動をキックオフ:

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)次I (私のアプリから)起動し、私のTwitterアカウントにサインインした(それによって、私のTwitterアカウントにアクセスすることをアプリに許可したことを認めた)ウェブ活動に続いています。

(4)最後に、リクエストを送信して、自分のTwitterアカウントへのアクセスを許可し、必要な場所に入力するためのピンを私に与えたことを祝福したページにリダイレクトされました。

私はもちろん、承認に成功すると、私のアプリ(Webアクティビティを開始したアクティビティ)にリダイレクトされ、そこで正常な承認を処理します。

私は数多くのことを試しましたが(以下に説明するカップル)、毎回短くなると思います。誰かが私を助けて、私が間違っていることを私に知らせることができれば、私は負債になります!ここで

は、私が試した二つの主なものです:

(1)Iが「コールバック://ツイーター」私のコードでコールバックURLを設定してみました(それは私のアプリの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> 

は...しかし、許可に成功した後、私は myhost.comにWebアクティビティ(インターネットブラウザ)の中にリダイレクトされていますではなく、私の活動に戻っより。

+1

アディルは、このためのチュートリアルを作りましたt54389.html – Blundell

+0

成功! Blundell、あなたのチュートリアルで私が間違っていたことがわかりました。コールバックURLを「コールバック:// tweeter」(2つのスラッシュ)にする必要がある場合は、「コールバック:///トゥイーター」(つまり3つのスラッシュ)を指定していました。実際、単純化するためには、単に "callback:///"が必要で、インテントフィルタのデータノードは単純に ''です。私はあなたのチュートリアル(テキストボックスに何も入力することはできません)のようにTwitter認証WebViewを起動するときに別の問題を抱えていますが、私はあなたのチュートリアルページや別のstackoverflow質問として質問を出すでしょう。 –

+0

そう別のStackOverflowの質問としてそれを行う] – Blundell

答えて

3

あなたは私のTwitterのチュートリアルで答えを見つけることがうれしい:それは持っている必要がある場合(2スラッシュ):私は「//ツイーターコールバック」とコールバックURLを指定して

:他の人のためにhttp://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-t54389.html

「コールバック:///トゥイーター」(すなわち、3つのスラッシュ)。実際に


、簡略化のために、それが唯一の「コールバック:///」である必要とインテントフィルタデータノードは、単にその後、次のとおりです。

<data android:scheme="callback"/> 

私はとしてその簡素化をお勧めしませんあなたは別のアプリも同様にそれを使用すれば、あなたのアプリはそれを拾うだろうし、すべての地獄が緩んでしまうのを覚えておく必要があります!

+0

Blundellにもう一度感謝します。良い点。 _myappname.com_ –

+0

「host」属性を追加すると「Activity」が「callback」インテントを選択しないようになり、ページにリダイレクトされるようになりました代わりにウェブブラウザで。リダイレクトurl(認証後)が "callback:///myappname.com?oauth_token = ..."(つまり、 'oauth_token'クエリパラメータが追加された)という形式であるためですこれはアクティビティのインテントフィルタに登録されません。私のアクティビティがコールバックインテントを取得するような、 'scheme' _and_ 'host'属性(および必要であれば他の属性)を持つインテントフィルタをどのように指定することができますか? –

+1

正規表現を試したことがありますか?私はちょうどよりユニークなコールバックを作成すると面倒を節約します:-) – Blundell

2

私はこの同じ問題を抱えていました。

<data android:scheme="your-callback-here" /> 
:ダッシュは罰金ですが、仕組みがそうのように、下線なしですべて小文字です:私の問題を修正あなたはアンドロイドで使用その名前を確保、マニフェストにインテントフィルタを設定するときにことを保証しました。

私は新しい開発者としてうんざりしました!

0

あなたは

アプリケーションへのリダイレクトに詰めBかもしれないがuはできませんTHN uが戻ってあなたのアプリケーションに誤って

をコールバックURLを入れた場合、作成したツイッターでそれを配置する必要があり、このよう を解決しようアプリコールバックURL:http://www.anddev.org/advanced-tutorials-f21/sending-a-tweet-:http://twitter.com/oauth/authorize?oauth_token=actualtokenhere&oauth_callback=myapp:///

それがうまくいけば、あなたのために動作します:)

関連する問題