2011-07-22 14 views
5

हैलो मुझे अपने ट्विटर एप्लिकेशन के साथ प्रमाणित करने के लिए जेटीविटर फ़ंक्शंस का उपयोग करने में कठिनाई हो रही है। मैं हमेशा एक "TwitterException"एंड्रॉइड जेटविटर, प्रमाणीकरण मुद्दे

यहाँ मेरी विधि

OAuthSignpostClient oauthClient = new OAuthSignpostClient(consumerKey, 
      privateKey, "oob"); 

क) मैं क्या "OOB" मान होना चाहिए पता नहीं है है, यह "callbackURL" है और ट्विटर पर अपने आवेदन में मिलता है यह "callBack URL: none" कहता है इसलिए मैंने "none", "None", और null डालने का प्रयास किया है जहां "oob" कोई भिन्न परिणाम नहीं है।

फिर बाकी इस बिंदु पर बॉयलरप्लेट

Intent i = new Intent(Intent.ACTION_VIEW, 
    Uri.parse(oauthClient.authorizeUrl().toString())); 
    startActivity(i); 
    // get the pin 
    String v = oauthClient.askUser("Please enter the verification PIN from Twitter"); 
    oauthClient.setAuthorizationCode(v); 
    // Store the authorisation token details for future use 
    String[] accessToken = oauthClient.getAccessToken(); 
    // Next time we can use new OAuthSignpostClient(OAUTH_KEY, OAUTH_SECRET, 
    //  accessToken[0], accessToken[1]) to avoid authenticating again. 

    EditText twitterText = (EditText)findViewById(R.id.twitterText); 
    twitterText.getText(); 

    // Make a Twitter object 
    Twitter twitter = new Twitter(null, oauthClient); 
    // Print Daniel Winterstein's status 
    //System.out.println(twitter.getStatus("winterstein")); 
    // Set my status 
    twitter.setStatus(twitterText.getText()); 

है, मैं बस यह कैसे काम करने के लिए पर यकीन नहीं है। इच्छा है कि मैं इसके बारे में अधिक verbose हो सकता है, लेकिन यह प्रमाणीकरण के साथ कुछ करने के लिए है। मैंने जो ऑनलाइन चीजें देखी हैं, वे उपयोगी नहीं हैं

उत्तर

7

अपने कॉलबैक URL के रूप में इस का प्रयास करें:

OAuthSignpostClient oauthClient = 
    new OAuthSignpostClient(consumerKey, privateKey, "callback://twitter"); 

याद रखें! के बाद:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 

निम्नलिखित

ओवरराइडonResume() करो सत्यापन कोड

protected void onResume() { 
    super.onResume(); 
    if (this.getIntent()!=null && this.getIntent().getData()!=null){ 
     Uri uri = this.getIntent().getData(); 
     if (uri != null && uri.toString().startsWith("callback://twitter")) { 
      //Do whatever you want 
      //usually use uri.getQueryParameter(someString); 
      //test what could be someString using Log.v("",uri.toString()); 
      //u want the Authorization code which is a couple of numbers 
      //so you could use oauthClient.setAuthorizationCode(v); 
      //and finally initialise Twitter 
     } 
    } 
} 

आप uri.getQueryParameterNames() उपयोग कर सकते हैं पैरामीटर String नाम पाने के लिए मिलता है।


@BobVork

मैं बस को जोड़ने के लिए है कि आप अपने Twitter एप्लिकेशन (twitter.com पर) के लिए एक कॉलबैक URL सेटिंग टैब में सेट की आवश्यकता होगी चाहते हैं।

इससे कोई फर्क नहीं पड़ता कि आपने क्षेत्र में क्या रखा है, लेकिन यदि यह खाली है, तो कॉलबैक यूआरएल काम नहीं करेगा।

+1

मैं यह भी जोड़ना चाहता हूं कि आपको अपने ट्विटर ऐप (twitter.com पर) के लिए सेटिंग टैब में कॉलबैक यूआरएल सेट करना होगा। इससे कोई फर्क नहीं पड़ता कि आपने क्षेत्र में क्या रखा है, लेकिन यदि यह खाली है, तो कॉलबैक यूआरएल काम नहीं करेगा। यह मुझे पता लगाने के लिए लगभग एक घंटे लग गया, इसलिए मैंने सोचा कि यह किसी और को कुछ और बचा सकता है। –

1

मुझे यकीन नहीं है कि यह समस्या है, लेकिन ऐसा लगता है कि आपने कभी भी ट्विटर ऑब्जेक्ट के लिए उपयोगकर्ता नाम सेट नहीं किया है।

+0

मैंने सोचा कि शपथ का मुद्दा यह था कि उपयोगकर्ता को अपना उपयोगकर्ता नाम या कुछ नहीं रखना पड़ेगा ... बहुत कम कठिन कोड?अवधारणा की तरह भ्रम, मेरा पहला अंतर्ज्ञान यह था कि उपयोगकर्ता नाम कहीं जाता है, लेकिन फिर ट्विटर ऑब्जेक्ट की आवश्यकता नहीं होती है और किसी की शपथ इसकी देखभाल करेगी – CQM

+0

मैं ट्विटर एपीआई से परिचित नहीं हूं, लेकिन हर जगह मैंने देखा (यहां तक ​​कि उदाहरण आपने कोड लिया था), यहां तक ​​कि जब ओथ का उपयोग किया गया था, तब भी उपयोगकर्ता नाम का उपयोग किया गया था। आप इसे एक बार रख सकते हैं और फिर आवश्यकता होने पर इसका उपयोग कर सकते हैं, आपको हर बार कुछ टेक्स्टव्यू से इसे पढ़ने की ज़रूरत नहीं है। – MByD

1

ठीक है, मुझे नहीं पता कि यह जेट्विटर एपीआई के साथ कैसा है और मुझे इस बिंदु पर पर्याप्त जावा नहीं पता है कि वास्तव में इस कोड की आंतरिक कार्यप्रणाली को समझने के लिए, लेकिन आपने NULL या None की बजाय कोशिश की है, इसके बजाय ? आज़माएं। यह जावास्क्रिप्ट से कॉल करते समय शेष API के साथ उपयोग किया जाता है। कोशिश करके देखो।

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