2012-01-08 4 views
16

私はアンドロイドの開発(と一般的にはJava)を使い慣れました。私は自分の基本情報をインポートして保存した場所から自分のツイッターアカウントにログインしてサインアップする必要があるアプリケーションを構築しています。必要な情報は、誕生日、名前(フルネーム)、ユーザー名、場所、性別などです。 私はこれを達成するためにtwitter4jを使用しています。私はtwitter4jのドキュメントを見てみましたが、アンドロイド初心者(一般的にはJava)であるため、ドキュメントは理解しにくいので、ステータス更新を設定する以外のことをすることはできません。Twitterを使ってツイッターユーザーの名前を取得する方法4j

package cc.co.localsquare.app; 

import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.widget.Toast; 
import oauth.signpost.OAuthProvider; 
import oauth.signpost.basic.DefaultOAuthProvider; 
import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; 
import oauth.signpost.exception.OAuthCommunicationException; 
import oauth.signpost.exception.OAuthExpectationFailedException; 
import oauth.signpost.exception.OAuthMessageSignerException; 
import oauth.signpost.exception.OAuthNotAuthorizedException; 
import twitter4j.Twitter; 
import twitter4j.TwitterFactory; 
import twitter4j.http.AccessToken; 

public class ConnectTwitterActivity extends BaseActivity { 

    public final static String CONSUMER_KEY = "valid key"; 
    public final static String CONSUMER_SECRET = "valid secret"; 
    public final static String CALLBACK_URL = "localsquare://ConnectTwitterActivity2"; 

    private CommonsHttpOAuthConsumer commonHttpOAuthConsumer; 
    private OAuthProvider authProvider; 

    private Twitter twitter; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.connect_twitter); 

     commonHttpOAuthConsumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
     authProvider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
      "http://twitter.com/oauth/access_token", "http://twitter.com/oauth/authorize"); 
     try { 
     String oAuthURL = authProvider.retrieveRequestToken(commonHttpOAuthConsumer, CALLBACK_URL); 
     this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(oAuthURL))); 
    } catch (OAuthMessageSignerException e) { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } catch (OAuthNotAuthorizedException e) { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } catch (OAuthExpectationFailedException e) { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } catch (OAuthCommunicationException e) { 
     Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     e.printStackTrace(); 
    } 
    } 

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

     Uri uri = intent.getData(); 
     if (uri != null && uri.toString().startsWith(CALLBACK_URL)) { 
     String verifier = uri.getQueryParameter(oauth.signpost.OAuth.OAUTH_VERIFIER); 
     try { 
      authProvider.retrieveAccessToken(commonHttpOAuthConsumer, verifier); 

      AccessToken accessToken = new AccessToken(commonHttpOAuthConsumer.getToken(), 
       commonHttpOAuthConsumer.getTokenSecret()); 

      twitter = new TwitterFactory().getInstance(); 
      twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 

      twitter.setOAuthAccessToken(accessToken); 

      // Alternate way: 
      // twitter = new TwitterFactory().getOAuthAuthorizedInstance(CONSUMER_KEY, CONSUMER_SECRET, 
      //  new AccessToken(commonHttpOAuthConsumer.getToken(), commonHttpOAuthConsumer.getTokenSecret())); 

      // Tweet message to be updated. 
      String tweet = "Hi there, This was sent from my application - OAuth, Twitter"; 
      twitter.updateStatus(tweet); 

     } 
     catch (Exception e) { 
      Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG); 
     } 
     } 
    } 

}

正確にどのように私は私の問題を解決することができます:

これが私の活動のコードですか?

答えて

13

詳細を取得する必要のあるTwitterユーザーの画面名がある場合は、User user = twitter.showUser(screenName);を使用できます。次に、userオブジェクトのゲッター機能を使用してユーザーに関する情報にアクセスできます。 user.getName(),user.getLocation()など

EclipseでUserクラスをインポートすることを忘れないでください。一般的には、Ctrl + Shift + をEclipseで押すこともできます。

+1

ありがとうございました – nchima

+0

こんにちはpulkitは、アンドロイドでtwitterフォロワーリストを取得するのを助けることができます –

+0

ちょっとPulkit Goyal、twitter.showUser(screenName)のscreenNameになるはずですか??? –

1

twitter.showUser()メソッドを使用してユーザーの詳細を取得します。ユーザー名を取得するにはuser.getName() javadocがあなたの友人であることを覚えておいてください。

+0

にfriendlistlengthなど、プロフィール画像のようなユーザーの異なる属性を取得するためにuser.getNameをUserクラスから、いくつかの方法を探索することができます

Twitter twitter = (Twitter) request.getSession().getAttribute("twitter"); long userID = twitter.getId(); twitter4j.User newUser=twitter.showUser(twitter.getScreenName()); String name=newUser.getName(); 

名を抽出するために、次のように使用することができます)は私に "twitter.showUser(String)型のメソッドtwitter.showUser(String)は引数()には適用できません"というエラーメッセージを表示します。 – nchima

+0

javadocを見て、私を助けてくれません。 – nchima

+0

showUser()メソッドを呼び出す場所にコードを投稿できますか? –

2

ログインが完了したら、セッションからTwitterオブジェクトを取得します。それは、あなたは( @Vineetバティア

関連する問題