2012-08-28 59 views
0

我在使用twitter進行身份驗證後遇到回調問題。 我在onNewItem上獲取標記,但網頁仍保留。android twitter4j回調不起作用

這是我的代碼

public class TwitterRequest extends Activity { 

    private Twitter niceTwitter; 
    public RequestToken niceRequestToken; 
    private Twitter twitter; 
    private RequestToken requestToken; 
    public final static String TWIT_KEY = "dsadsdsdsads"; 

    public final static String TWIT_SECRET = "sdsdsdsd"; 

    public final static String TWIT_URL = "callbackapp://tweeter"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     niceTwitter = new TwitterFactory().getInstance(); 

     niceTwitter.setOAuthConsumer(TWIT_KEY, TWIT_SECRET); 

     niceRequestToken = null; 

     try { 
      niceRequestToken = niceTwitter.getOAuthRequestToken(TWIT_URL); 
     } catch (TwitterException e) { 
      e.printStackTrace(); 
      Dbg.p("niceRequestToken: " + niceRequestToken); 
     } 


     String authURL = niceRequestToken.getAuthenticationURL(); 

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

    } 

    protected void onNewIntent(Intent intent) { 

     super.onNewIntent(intent); 

     Uri twitURI = intent.getData(); 
     Intent response = new Intent(); 

     if (twitURI != null && twitURI.toString().startsWith(TWIT_URL)) { 

      String oaVerifier = twitURI.getQueryParameter("oauth_verifier"); 

      try { 

       AccessToken accToken = niceTwitter.getOAuthAccessToken(
         niceRequestToken, oaVerifier); 

       String token = accToken.getToken(); 

       response.putExtra("token", token); 

      } catch (TwitterException te) { 
       Log.e("tag", 
         "Failed to get access token: " + te.getMessage()); 
       response.putExtra("token", "error"); 
      } 

      setResult(RESULT_OK, response); 
      finish(); 
     } 
    } 

} 

當網頁打開我在登錄Twitter和我收到的令牌,但瀏覽器是可見和Android不關閉頁面。

這是我的清單

<activity 
      android:name=".activities.twitter.TwitterRequest" 
      android:launchMode="singleInstance" > 
      <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:host="tweeter" 
        android:scheme="callbackapp" /> 
      </intent-filter> 
     </activity> 

回答

0

嘗試以下修改清單活動條目

<activity 
      android:name=".activities.twitter.TwitterRequest" 
      android:launchMode="singleTask" > 
      <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:host="callback" 
        android:scheme="x-oauthflow-twitter" /> 
      </intent-filter> 
     </activity> 
+0

對不起不起作用。 我修改: 機器人:主機= 「回調」 機器人:方案= 「X-oauthflow-twitter上」/> 和 公共最終靜態字符串TWIT_URL = 「回調:///」; – user1062198

1

的問題是是,你開始啓動瀏覽器應用的新的活動。

此時你有2個活動。當你在第一個活動中調用finish()時,第二個活動仍將保持。

我建議你在你的活動做出WebView,這樣您可以控制網頁的知名度