2011-08-12 28 views
0

enter image description hereTwitter的「取消並返回到應用程序」的問題

這是Twitter的登錄的第一頁,當我點擊取消並返回到應用 我的申請獲得強制關閉。 M使用Twitter4J這 請告訴我什麼可以是問題。

使用此密碼。

void OAuthLogin() { 
     try { 

      twitter = new TwitterFactory().getInstance(); 
      twitter.setOAuthConsumer(consumerKey, consumerSecret); 
      requestToken = twitter.getOAuthRequestToken(CALLBACKURL); 
      String authUrl = requestToken.getAuthenticationURL(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri 
        .parse(authUrl))); 
     } catch (TwitterException ex) { 
     Log.e("in Main.OAuthLogin", ex.getMessage()); 
     } 
    } 


@Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     Uri uri = intent.getData(); 
     if (uri != null && uri.toString().contains(CALLBACKURL)) { 
      try { 
       String verifier = uri.getQueryParameter("oauth_verifier"); 
       AccessToken accessToken = twitter.getOAuthAccessToken(
         requestToken, verifier); 
       String token = accessToken.getToken(), secret = accessToken 
         .getTokenSecret(); 
       twitter.setOAuthAccessToken(token, secret); 

       twitter.updateStatus(base_link_url); 
      this.displayTimeLine(token, secret); // after everything, 
      } catch (TwitterException ex) { 
           } 
     } 
    } 

我的清單文件:使用此代碼M代表我的課

<activity android:name=".Test" android:configChanges="keyboard|keyboardHidden|orientation" 
      android:screenOrientation="portrait" android:label="@string/app_name" 
      android:launchMode="singleTask" android:theme="@android:style/Theme.NoTitleBar"> 
      <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="gauravmusic" android:host="twitt" /> 
      </intent-filter> 
     </activity> 

MY回調URL:使用我的代碼,其中m

private final String CALLBACKURL = "gauravmusic://twitt"; 

現在推薦我在哪裏,要去錯了。

研究後,我發現,

  if (uri != null && uri.toString().contains(CALLBACKURL)) 
{ 

} 

如果我改變了條件

if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME)) { 
} 

取消,並返回到應用現在工作正常,但現在我無法發佈的tweet在我的牆上。 我一起加入這兩個條件類似的

if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME) || uri.toString().contains(CALLBACKURL)) { 

} 

它也沒有工作.. 請給我建議。

嗨,我找到答案。我發現一個模式,當取消和重新調整到應用程序鏈接被點擊,然後執行此代碼。在這種情況下,我們不會登錄,所以我們無法找到字符串驗證器的值,並且它給出了NullPointer異常。

if (uri != null && uri.toString().contains(CALLBACKURL)) { 
      try { 
       String verifier = uri.getQueryParameter("oauth_verifier"); 
       AccessToken accessToken = twitter.getOAuthAccessToken(
         requestToken, verifier); 
       String token = accessToken.getToken(), secret = accessToken 
         .getTokenSecret(); 
       twitter.setOAuthAccessToken(token, secret); 

       twitter.updateStatus(base_link_url); 
      this.displayTimeLine(token, secret); // after everything, 
      } catch (TwitterException ex) { 
           } 
     } 

我改變此行

if (uri != null && uri.getScheme().toString().contains(CALLBACKURL_SCHEME)&& !uri.toString().contains("denied")) 

一些研究,我發現,當我們點擊取消並返回到應用鏈接它的URI就是這樣

DEBUG/URI!!!!!!!!!!!!!!!!!!!!!(5174): gauravmusic://twittdenied=FjgW7QQYpFDI03sDvIc5I1w6w2Xv67TFI9sKW1OyA 

後當我們正式登錄時,Uri就是這樣的

08-17 10:31:19.182: DEBUG/URI(5278): gauravmusic://twitt?oauth_token=pm0E10vayzTViLGQpGZwwpIKhQ9aqwLrEBggiJ7vvPY&oauth_verifier=cHiWkuiQfygmlPeC7B6fNbiqv34gkPIdWctlavzGo80 

然後,添加條件

!uri.toString()。包含( 「拒絕」)(BCZ當我們還沒有登錄URI包含 「拒絕」 一個字)

其工作罰款我。 現在,當我點擊取消並返回到應用程序,它不會達到此線或在此循環中。
字符串驗證器= uri。getQueryParameter( 「oauth_verifier」);

現在一切正常。建議我是否有更好的主意來處理這個問題。我不想依賴Uri的「被拒絕」這個詞。

+1

請發佈一些代碼和logcat的堆棧跟蹤。 – 2011-08-12 12:34:36

+1

它可能是任何東西,不可能。可能是一個錯誤。當你沒有提供任何證據時,我很困惑你期望有人能夠幫助你。也許你認爲只有一件事可能是原因。 –

+0

重複? http://stackoverflow.com/questions/7040043/twitter-cancel-and-return-to-app-link-of-login-page-gives-force-close-closed – Joubarc

回答

1

查看此鏈接瞭解Android應用程序中的Twitter集成。

它的工作原理非常完美。

確保您在應用程序的「設置」頁面的字段CallBack URL中輸入了一些虛擬回叫。

Integrating Twitter in Android Application

編輯:

我猜到發生了什麼事在我們的代碼,如果取消從授權的應用程序,然後將有以下驗證

String verifier = uri.getQueryParameter("oauth_verifier"); 

沒有價值由於有是沒有價值的,它會拋出NULL POINTER EXCEPTION它會從嘗試Catch塊,因此

twitter.updateStatus(base_link_url); 

不會達到

所以鳴叫就不貼了。

如果你需要檢查一下添加進來登錄catch塊,這樣你可以看到發生了什麼。 `

+0

不能讓你..你需要什麼? – Venky

+0

對不起,我在我的問題中添加了一些行,chk it ....我不能更改我的代碼,我的應用程序很大,我不能在其中添加五個文件和四個jar文件。我必須修改此代碼。請建議我。 –

+0

@Gaurav Gupta我改變了答案檢查它。 – Venky

相關問題