2012-03-26 7 views
1
public class TwitterActivity extends Activity 
    { 
     private Twitter twitter; 
     private OAuthProvider provider; 
     private CommonsHttpOAuthConsumer consumer; 

     String CONSUMER_KEY = "abcdefgh"; 
     String CONSUMER_SECRET = "abcdefgh"; 
     String CALLBACK = "twitterapp://connect"; 


     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      askOAuth(); 
     } 

     private void askOAuth() { 
      try { 
       consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
       provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
                "http://twitter.com/oauth/access_token", 
                "http://twitter.com/oauth/authorize"); 
       String authUrl = provider.retrieveRequestToken(consumer, CALLBACK); 
       Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
       this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
      } catch (Exception e) { 
       Log.e(APP, e.getMessage()); 
       Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
     } 

     @Override 
     protected void onNewIntent(Intent intent) { 

      super.onNewIntent(intent); 

      Uri uri = intent.getData(); 
      if (uri != null && uri.toString().startsWith(CALLBACK)) { 

       String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); 

       try { 
        // this will populate token and token_secret in consumer 
        provider.retrieveAccessToken(consumer, verifier); 

        // TODO: you might want to store token and token_secret in you app settings!!!!!!!! 
        AccessToken a = new AccessToken(consumer.getToken(), consumer.getTokenSecret()); 

        // initialize Twitter4J 
        twitter = new TwitterFactory().getInstance(); 
        twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
        twitter.setOAuthAccessToken(a); 

        // 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.e(APP, e.getMessage()); 
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
       } 

      } 
     } 
    } 


P.S.: I have used these api's 
    [1]: https://github.com/punitmg/Twitter-Test-App 
    [2]: https://github.com/grantland/twitter-android-sdk 
    [3]: https://github.com/yusuke/twitter4j/ 

これらのAPIをすべて使用することで、私はうまくいきました。しかし残念なことに、以下の2つの画面が上記の3つのケースすべてに表示されています。Twitterのコールバックとログイン(Jtwitterを使用)

私のツイートが完了すると、()または終了することができます。

So .... plz guide me if i was wrong ... 

screenshot1

screenshot2

+0

私は上記の2つの画面が欲しいとは思っていません。 –

答えて

0

あなたはだから自分のTwitterのAUTHORIZEのURLにforce_login =真を追加し、この問題を解決するために

をログイン秒の時間を強制する必要があります。

私はを追加した後

mHttpOauthprovider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
       "http://twitter.com/oauth/access_token", 
     "http://twitter.com/oauth/authorize?force_login=true"); 

(別の名前を持つクラスファイルを持っているならば、DefaultOAuthProviderと、プロジェクト内で検索)だけTwitterApp.javaクラス内のコードの次の行を変更する意味force_login = true webviewの読み込みの問題は解決しますが、ログインとパスワードを入力する必要があります。

関連する問題