2011-01-05 2 views
0

мне нужно интегрировать Twitter с моей Android приложений, и это мой код (на основе this):Twitter интеграции для Android приложений

package com.anta40.oauthsetup; 

import twitter4j.Twitter; 
import twitter4j.TwitterException; 
import twitter4j.TwitterFactory; 
import twitter4j.http.AccessToken; 
import twitter4j.http.RequestToken; 
import twitter4j.Status; 
import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Toast; 
import java.util.List; 

public class OAuthSetup extends Activity { 
Twitter twitter; 
RequestToken requestToken; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    String CONSUMER_KEY = "xxxxxxxxxx"; 
    String CONSUMER_SECRET = "yyyyyyyyyyyyyyyyyyyy"; 

    try { 
     twitter = new TwitterFactory().getInstance(); 
     twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
     RequestToken requestToken = twitter.getOAuthRequestToken(); 
     AccessToken accessToken = null; 
     String url = requestToken.getAuthorizationURL(); 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
     startActivity(intent); 
    } 
    catch (TwitterException e){ 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    Uri uri = intent.getData(); 

    try { 
     String verifier = uri.getQueryParameter("oauth_verifier"); 
     AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, verifier); 
     String token = accessToken.getToken(); 
     String secret = accessToken.getTokenSecret(); 
     displayTimeLine(token, secret); 
    } 
    catch (TwitterException e){ 
     e.printStackTrace(); 
    } 
} 

@SuppressWarnings("deprecation") 
void displayTimeLine(String token, String secret) { 
    if (null != token && null != secret) { 
     List<Status> statuses = null; 
     try { 
      twitter.setOAuthAccessToken(token, secret); 
      statuses = twitter.getFriendsTimeline(); 
      Toast.makeText(this, statuses.get(0).getText(), Toast.LENGTH_LONG) 
       .show(); 
     } catch (Exception ex) { 
      Toast.makeText(this, "Error:" + ex.getMessage(), 
        Toast.LENGTH_LONG).show(); 
      Log.d("Main.displayTimeline",""+ex.getMessage()); 
     } 

    } else { 
     Toast.makeText(this, "Not Verified", Toast.LENGTH_LONG).show(); 
    } 
} 

}

Теперь, вместо того, чтобы использовать WebView, как может Я использую Dialog для ввода имени пользователя Twitter &?

ответ

1

Вы не можете. Twitter позволит только сторонним приложениям использовать клятву для аутентификации с самим собой.

Хорошо, позвольте мне пояснить, что вы можете поместить диалоговое окно и позволить пользователю вводить там имя пользователя/пароль, но twitter больше не предоставляет никаких api для него.

Вы можете найти более подробную информацию по этой теме здесь: http://dev.twitter.com/pages/oauth_faq