2012-05-09 15 views
2

これは非常に苦労しています。私はAccessTokenに何が間違っているのか分からないが、Twitter4jのupdateStatusを呼び出してtwitterに投稿する前に設定しようとしている。承認後にTwitterに投稿するAccessTokenを取得する方法

私はAccessTokenを入手するさまざまな方法を試しましたが、私はTwitter4Jのみを使用しています。

AccessToken accessToken = twitter.getOAuthAccessToken(twitter.getOAuthRequestToken(), verifier); 

はエラーを与える:

05-09 12:06:45.776: D/GameName(678): Received authentication challenge is null 

私は認証のためのTwitterのブラウザに切り替えることができています。私はユーザー名とパスワードを入力し、 "Authorize App"を押してください。その後、ブラウザが "リダイレクト"して自分のアプリに戻ります。私のアプリが登場しブーム!それはクラッシュする!私のアプリはonNewIntentを呼び出しています。良い作品を認可する

コード: (さえずりがメンバ変数である)の認可からの復帰

public void twitterAuthorize() 
    { 
     try 
     { 
      twitter = new TwitterFactory().getInstance(); 
      twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 

      RequestToken requestToken = twitter.getOAuthRequestToken(Constants.OAUTH_CALLBACK_URL);       
      startActivityForResult(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthorizationURL())), TWITTER_AUTHORIZE_ACTIVITY_RESULT_CODE); 
     } 
     catch (TwitterException e) 
     { 
       Log.d(Globals.sApplicationName, e.getMessage()); 
       e.printStackTrace();     
     }  

    } 

、私は例外がスローされ、「AccessToken accessToken = ...」の行を取得。

@Override 
protected void onNewIntent(Intent intent) 
{ 
    super.onNewIntent(intent); 

    Log.d(Globals.sApplicationName, "ENTERED: onNewIntent"); 

    Uri uri = intent.getData(); 
    if (uri != null && uri.toString().startsWith(Constants.OAUTH_CALLBACK_URL)) 
    { 
     Log.d(Globals.sApplicationName, "oAuth: " + uri.toString()); 
     String verifier = uri.getQueryParameter("oauth_verifier"); 

     try { 
      if (verifier != null) 
      { 
       Log.d(Globals.sApplicationName, "Verifier: " + verifier); 


       //Try 1: doesn't work 
       //AccessToken a = new AccessToken(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 

       //Try 2: doesn't work    
       AccessToken accessToken = twitter.getOAuthAccessToken(twitter.getOAuthRequestToken(), verifier); 

       //Try 3: doesn't work 
       //String token = uri.getQueryParameter("oauth_token");  
       //AccessToken accessToken = new AccessToken(token, verifier); 

       //twitter = new TwitterFactory().getInstance(); 

       twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET); 
       twitter.setOAuthAccessToken(accessToken); 

       // create a tweet 
       Date d = new Date(System.currentTimeMillis()); 
       String tweet = "#OAuth working! " + d.toLocaleString(); 

       // send the tweet 
       twitter.updateStatus(tweet); 
      } 
     } catch (Exception e) { 

      Log.d(Globals.sApplicationName, e.getMessage()); 
      e.printStackTrace(); 
     } 
    } 
} 

私は(私はちょうどので、私はこのフォーラムのポストからプライベートそれを維持置き換え)コールスタック上のこれらのエラーを取得:

05-09 12:06:45.136: D/GameName(678): ENTERED: onNewIntent 
05-09 12:06:45.136: D/GameName(678): oAuth: GameNameTwitterOAuth://callback?oauth_token=<some long string>&oauth_verifier=<some long string> 
05-09 12:06:45.156: D/GameName(678): Verifier: <some long string> 
05-09 12:06:45.747: W/AudioFlinger(32): write blocked for 131 msecs, 825 delayed writes, thread 0xff88 
05-09 12:06:45.776: D/GameName(678): Received authentication challenge is null 
05-09 12:06:45.846: W/System.err(678): Received authentication challenge is nullRelevant discussions can be on the Internet at: 
05-09 12:06:45.846: W/System.err(678): http://www.google.co.jp/search?q=bfb606ed or 
05-09 12:06:45.856: W/System.err(678): http://www.google.co.jp/search?q=72d7e395 
05-09 12:06:45.856: W/System.err(678): TwitterException{exceptionCode=[bfb606ed-72d7e395 e2110e48-e8248ad2], statusCode=-1, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version=2.2.5} 
05-09 12:06:45.856: W/System.err(678): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:200) 
05-09 12:06:45.856: W/System.err(678): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) 
05-09 12:06:45.856: W/System.err(678): at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:102) 
05-09 12:06:45.856: W/System.err(678): at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:121) 
05-09 12:06:45.856: W/System.err(678): at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:104) 
05-09 12:06:45.856: W/System.err(678): at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:276) 
05-09 12:06:45.856: W/System.err(678): at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:269) 
05-09 12:06:45.856: W/System.err(678): at com.mnecreations.panarchyfling.PanarchyFling.onNewIntent(PanarchyFling.java:602) 
05-09 12:06:45.869: W/System.err(678): at android.app.Instrumentation.callActivityOnNewIntent(Instrumentation.java:1122) 
05-09 12:06:45.869: W/System.err(678): at android.app.ActivityThread.deliverNewIntents(ActivityThread.java:1812) 
05-09 12:06:45.869: W/System.err(678): at android.app.ActivityThread.performNewIntents(ActivityThread.java:1825) 
05-09 12:06:45.869: W/System.err(678): at android.app.ActivityThread.handleNewIntent(ActivityThread.java:1834) 
05-09 12:06:45.876: W/System.err(678): at android.app.ActivityThread.access$2300(ActivityThread.java:123) 
05-09 12:06:45.876: W/System.err(678): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1040) 
05-09 12:06:45.876: W/System.err(678): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-09 12:06:45.876: W/System.err(678): at android.os.Looper.loop(Looper.java:126) 
05-09 12:06:45.876: W/System.err(678): at android.app.ActivityThread.main(ActivityThread.java:3997) 
05-09 12:06:45.876: W/System.err(678): at java.lang.reflect.Method.invokeNative(Native Method) 
05-09 12:06:45.876: W/System.err(678): at java.lang.reflect.Method.invoke(Method.java:491) 
05-09 12:06:45.896: W/System.err(678): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
05-09 12:06:45.896: W/System.err(678): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
05-09 12:06:45.896: W/System.err(678): at dalvik.system.NativeStart.main(Native Method) 
05-09 12:06:45.896: W/System.err(678): Caused by: java.io.IOException: Received authentication challenge is null 
05-09 12:06:45.896: W/System.err(678): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1176) 
05-09 12:06:45.896: W/System.err(678): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1118) 
05-09 12:06:45.896: W/System.err(678): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1044) 
05-09 12:06:45.896: W/System.err(678): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:736) 
05-09 12:06:45.906: W/System.err(678): at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:35) 
05-09 12:06:45.906: W/System.err(678): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:164) 
05-09 12:06:45.906: W/System.err(678): ... 21 more 
05-09 12:06:45.906: D/GameName(678): -------------------------------------------- 
05-09 12:06:45.906: D/GameName(678): Restart activity GameName 

教えてください、これは本当に混乱しています。私は他の投稿を見て、彼らはタイムスタンプについては言及していますが、それは私には意味がありません。

は、私はあなたが持っている検証とは何の関係もない新しいリクエストトークンを生成していると思うあなた

答えて

0

ありがとうございます。

は、Twitterのオブジェクトとあなたの最初の時間を要求してきたトークンを保存してみて、このような何かをしよう:

  1. リスト項目
  2. consumerkeyとconsumerkeysecret
  3. とTwitterの工場からのget Twitterのオブジェクト
  4. GET requesttoken(twitter.getrequesttoken())
  5. はtwitterobjectを保存し、
  6. をrequesttoken認証URL
  7. ためrequesttoken問います
  8. はTwitterや検証
  9. リターンをコールバックを経由して検証
  10. 保存twitterobjectを取得し、それらの保存twitterobjectとrequesttokenは、ユーザーを検証する検証と一緒に使用する必要があります
  11. をrequesttokenを取得するために行く....

次に認証されました

関連する問題