2011-07-22 10 views
5

こんにちは私のTwitterアプリケーションではJTwitter機能を使用して認証するのが難しいです。私はいつもここで「TwitterException」Android Jtwitter、認証の問題

は、私の方法は、a)のIは、「OOB」の値がどうあるべきかわからない、それは「callbackURL」で、Twitter上で私のアプリケーションで

OAuthSignpostClient oauthClient = new OAuthSignpostClient(consumerKey, 
      privateKey, "oob"); 

ありますそれは"callBack URL: none"と言っていますので、私は入れてみました"none""None"nullここでは"oob"は異なる結果がありません。

はその後、残りはこの時点で定型

Intent i = new Intent(Intent.ACTION_VIEW, 
    Uri.parse(oauthClient.authorizeUrl().toString())); 
    startActivity(i); 
    // get the pin 
    String v = oauthClient.askUser("Please enter the verification PIN from Twitter"); 
    oauthClient.setAuthorizationCode(v); 
    // Store the authorisation token details for future use 
    String[] accessToken = oauthClient.getAccessToken(); 
    // Next time we can use new OAuthSignpostClient(OAUTH_KEY, OAUTH_SECRET, 
    //  accessToken[0], accessToken[1]) to avoid authenticating again. 

    EditText twitterText = (EditText)findViewById(R.id.twitterText); 
    twitterText.getText(); 

    // Make a Twitter object 
    Twitter twitter = new Twitter(null, oauthClient); 
    // Print Daniel Winterstein's status 
    //System.out.println(twitter.getStatus("winterstein")); 
    // Set my status 
    twitter.setStatus(twitterText.getText()); 

ですが、私は単純にこの作業を行う方法についてはよく分かりません。私はそれについてもっと冗長にすることができれば幸いですが、それは認証に関係しています。私が見たオンラインのものは役に立たなかった

答えて

7

はあなたのコールバックURLとしてこのをお試しください:

OAuthSignpostClient oauthClient = 
    new OAuthSignpostClient(consumerKey, privateKey, "callback://twitter"); 

を忘れないでください!後

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 

は、パラメータにString名を取得するためにuri.getQueryParameterNames()を使用することができます検証コード

protected void onResume() { 
    super.onResume(); 
    if (this.getIntent()!=null && this.getIntent().getData()!=null){ 
     Uri uri = this.getIntent().getData(); 
     if (uri != null && uri.toString().startsWith("callback://twitter")) { 
      //Do whatever you want 
      //usually use uri.getQueryParameter(someString); 
      //test what could be someString using Log.v("",uri.toString()); 
      //u want the Authorization code which is a couple of numbers 
      //so you could use oauthClient.setAuthorizationCode(v); 
      //and finally initialise Twitter 
     } 
    } 
} 

を取得するには、次の

オーバーライドonResume()を行います。


@BobVork

私はちょうどあなたが(twitter.com上)あなたのTwitterアプリの[設定]タブで設定したコールバックURLを持っている必要がありますことを追加したいと思います。

フィールドに何を入れても問題ありませんが、空であればコールバックURLは機能しません。

+1

私は、あなたのTwitterアプリケーション(twitter.com上)の設定タブでコールバックURLを設定する必要があると付け加えたいと思います。フィールドに何を入れても問題ありませんが、空であればコールバックURLは機能しません。これは私にとって1時間ほどかかりました。だから私はこれが誰か他の人を救うかもしれないと考えました。 –

1

私はそれが問題だとは思っていませんが、twitterオブジェクトのユーザー名を決して設定しないようです。

+0

私は、ユーザーが自分のユーザー名を何かに置く必要がないように宣誓していると思っていました。概念の種類の混乱、私の最初の直感はユーザー名がどこかに行くということでしたが、twitterオブジェクトはそれを必要とせず、誰かの誓いがそれを世話するでしょう。 – CQM

+0

私はtwitter APIに慣れていません。あなたがコードを取得した例)、oAuthが使用されても、ユーザー名も使用されました。あなたはそれを一度保存​​しておき、必要なときに使用することができます。毎回TextViewから読み込む必要はありません。 – MByD

1

私はJtwitter APIのしくみが分かりません。このコードの内部動作を実際に理解するには十分なJavaが分かりませんが、NULLまたはNoneではなく、代わりに?を試してみてください。これはJavascriptからの呼び出し時に安らかなAPIで使用されるコールバックです。やってみて。