2012-01-08 16 views
16

का उपयोग कर ट्विटर उपयोगकर्ता का नाम पुनर्प्राप्त कैसे करें I एंड्रॉइड विकास (और आम तौर पर जावा) के लिए नया हूं। मैं एक ऐसा एप्लिकेशन बना रहा हूं जिसके लिए उपयोगकर्ता को अपने ट्विटर खाते में लॉग इन करके साइन अप करने की आवश्यकता हो, जहां से उनकी मूल जानकारी आयात और सहेजी जाती है। आवश्यक जानकारी जन्मदिन, नाम (पूर्ण नाम), उपयोगकर्ता नाम, स्थान, लिंग इत्यादि होगी मैं इसे पूरा करने के लिए 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 + शिफ्ट + ग्रहण में दबाकर भी कर सकते हैं।

+1

धन्यवाद यह – nchima

+0

हाय पल्किट है, क्या आप मुझे एंड्रॉइड –

+0

हे पल्किट गोयल में ट्विटर अनुयायी सूची लाने में मदद कर सकते हैं, ट्विटर.शोउसर (स्क्रीन नाम) में स्क्रीन नाम क्या होना चाहिए ??? –

1

उपयोगकर्ता विवरण प्राप्त करने के लिए twitter.showUser() विधि का उपयोग करें। उपयोगकर्ता का नाम प्राप्त करने के लिए user.getName() याद रखें javadoc आपका मित्र है।

+0

user.getName तलाश कर सकते हैं प्रोफ़ाइल छवि, friendlistlength आदि जैसे उपयोगकर्ता के विभिन्न विशेषताओं पाने के लिए (निकालने के लिए निम्नलिखित तरीके से इस्तेमाल किया जा सकता) मुझे एक ग्रहण त्रुटि संदेश देता है "उपयोगकर्ता को हल नहीं किया जा सकता", और twitter.showUser() मुझे एक त्रुटि देता है "विधि ट्विटर में विधि twitter.showUser (स्ट्रिंग) तर्क के लिए लागू नहीं है()" – nchima

+0

और मेरे पास है जावाडोक पर एक नज़र डाली, वास्तव में मेरी मदद नहीं करता है। – nchima

+0

क्या आप कोड पोस्ट कर सकते हैं जहां आप showUser() विधि का आह्वान कर रहे हैं? –

2

लॉगिन पूर्ण होने के बाद सत्र से ट्विटर ऑब्जेक्ट प्राप्त करें। यही कारण है कि नाम

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

आप उपयोगकर्ता वर्ग से कई तरीकों @Vineet भाटिया

संबंधित मुद्दे