2012-01-08 2 views
16

나는 android development (그리고 일반적으로 java)를 처음 사용합니다. 사용자가 기본 정보를 가져 와서 저장 한 곳에서 트위터 계정에 로그인하여 가입해야하는 응용 프로그램을 만들고 있습니다. 필요한 정보는 생일, 이름 (성명), 사용자 이름, 위치, 성별 등입니다. 나는 이것을 수행하기 위해 twitter4j를 사용하고 있습니다. 나는 twitter4j 문서를 보았지만 안드로이드 초보자 (일반적으로 자바)가 되었기 때문에 문서를 이해하기가 약간 힘들어서 상태 업데이트를 설정하는 것 이외의 다른 일을 할 수없는 것처럼 보입니다.트위터를 사용하여 트위터 사용자 이름을 검색하는 방법 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

자세한 내용을 알아야하는 트위터 사용자의 화면 이름이있는 경우 User user = twitter.showUser(screenName);을 사용할 수 있습니다. 이제 user 객체의 게터 기능을 사용하여 사용자에 대한 정보에 액세스 할 수 있습니다. user.getName(), user.getLocation()

이클립스에서는 User 클래스를 가져와야합니다. 일반적으로 Ctrl + Shift + 을 누르면됩니다.

+1

고마워요 – nchima

+0

안녕 pulkit 내가 안드로이드에 트위터 추종자 목록을 가져올 수 있습니다. –

+0

안녕하세요 Pulkit Goyal, 무엇 twitter.showUser (screenName)에 screenName해야합니까 ??? –

1

twitter.showUser() 메서드를 사용하면 사용자 세부 정보를 얻을 수 있습니다. 사용자 이름을 얻으려면 user.getName() javadoc이 친구임을 기억하십시오.

+0

user.getName을 사용자 클래스의 여러 가지 방법을 탐색 할 수 있습니다

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

이름을 (추출하기 위해 다음과 같은 방법으로 사용할 수 있습니다) 내게 일식 오류 메시지 "사용자를 해결할 수 없습니다"및 twitter.showUser() 나에게 오류를 제공합니다 "트위터 유형의 메서드 twitter.showUser (문자열) 인수()에 적용되지 않습니다" – nchima

+0

그리고 난 javadoc을 한 번 보았습니다. 정확히 나를 도와주지는 않습니다. – nchima

+0

showUser() 메소드를 호출하는 코드를 게시 할 수 있습니까? –

2

일단 로그인이 완료되면 세션에서 트위터 객체를 가져옵니다. 즉 당신은 프로필 이미지, friendlistlength 등과 같은 사용자의 서로 다른 특성을 얻을 수 @Vineet 바 티아

관련 문제