2009-09-28 22 views
8

मुझे ट्विटर के ओथ प्रमाणीकरण और कॉलबैक यूआरएल का उपयोग करने में समस्या है।ट्विटर ओ-ऑथ कॉलबैक यूआरएल

मैं php में कोडिंग कर रहा हूँ और चहचहाना विकि द्वारा संदर्भित नमूना कोड का उपयोग कर, http://github.com/abraham/twitteroauth

मुझे लगता है कि कोड मिल गया है, और एक साधारण परीक्षण की कोशिश की और यह अच्छी तरह से काम किया। हालांकि मैं प्रोग्रामबैक को कॉलबैक यूआरएल निर्दिष्ट करना चाहता हूं, और उदाहरण ने इसका समर्थन नहीं किया।

तो मैं जल्दी से एक पैरामीटर में लेने के लिए getRequestToken() विधि संशोधित और अब यह इस तरह दिखता है:

function getRequestToken($params = array()) { 
    $r = $this->oAuthRequest($this->requestTokenURL(), $params); 
    $token = $this->oAuthParseResponse($r); 
    $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']); 
    return $token; 
} 

और मेरे कॉल इस

$tok = $to->getRequestToken(array('oauth_callback' => 'http://127.0.0.1/twitter_prompt/index.php')); 

यह केवल परिवर्तन है की तरह लग रहा मैंने बनाया, और रीडायरेक्ट एक आकर्षण की तरह काम करता है, हालांकि मुझे एक त्रुटि मिल रही है जब मैं कोशिश करता हूं और कॉल करने की कोशिश करने के लिए अपनी नई स्वीकृत पहुंच का उपयोग करता हूं। मुझे "आपको प्रमाणीकृत नहीं किया जा सका" त्रुटि मिलती है। इसके अलावा आवेदन उपयोगकर्ताओं को अधिकृत कनेक्शन में वास्तव में कभी भी जोड़ा नहीं जाता है।

अब मैं चश्मा पढ़ता हूं और मैंने सोचा कि मुझे बस इतना करना था कि अनुरोध टोकन प्राप्त करते समय पैरामीटर निर्दिष्ट करें। क्या कोई ओथ और ट्विटर में थोड़ा और अनुभवी हो सकता है संभवतः मुझे हाथ दे सकता है? धन्यवाद

उत्तर

7

मुझे लगता है कि यह अब तक ट्विटर द्वारा तय किया गया है या आप अपनी एप्लिकेशन सेटिंग्स में एक डिफ़ॉल्ट कॉलबैक यूआरएल प्रदान करने के लिए चूक गए हैं, जो ऊपर दिए गए अन्य लोगों द्वारा बताए गए अनुसार काम करने के लिए गतिशील कॉलबैक यूआरएल के लिए आवश्यक है।

कोई भी मामला, मुझे अनुरोध टोकन पुनर्प्राप्त करते समय शपथ_callback पैरामीटर पारित करके यह काम मिल गया। मैं twitter-async PHP लाइब्रेरी का उपयोग कर रहा हूं और पुस्तकालय को कॉलबैक यूआरएल पास करने के लिए एक छोटा सा बदलाव करना पड़ा।

आप चहचहाना-async का उपयोग कर रहे हैं, तो परिवर्तन के नीचे है:

संशोधित getRequestToken और getAuthenticateURL कार्यों पैरामीटर

public function getRequestToken($callback_url = null) 
    { 
    $params = empty($callback_url) ? null : array('oauth_callback'=>$callback_url); 
    $resp = $this->httpRequest('GET', $this->requestTokenUrl, $params); 
    return new EpiOAuthResponse($resp); 
    } 


public function getAuthenticateUrl($callback_url = null) 
    { 
    $token = $this->getRequestToken($callback_url); 
    return $this->authenticateUrl . '?oauth_token=' . $token->oauth_token; 
    } 

के रूप में कॉलबैक यूआरएल ले और अपने PHP कोड के कॉलबैक यूआरएल पारित करने के लिए।

$twitterObj->getAuthenticateUrl('http://localhost/twitter/confirm.php'); 
+0

चीयर्स - यह वास्तव में मुझे आवश्यक संशोधन है। – Gavin

+0

@ गैविन- यह जानकर अच्छा लगा कि – Murukesh

+1

किसी भी दिलचस्पी के लिए, यह अब ट्विटर का एक हिस्सा है- async स्वयं – Relequestual

-2

ट्विटर oauth_callback पैरामीटर का सम्मान नहीं करता है और केवल पंजीकृत एप्लिकेशन सेटिंग्स में निर्दिष्ट एक का उपयोग करेगा।

यह कॉलबैक में 127.0.0.1 या लोकलहोस्ट नामों की भी अनुमति नहीं देता है, इसलिए मैंने http://dev.twipler.com सेटअप किया है जो DNS में 127.0.0.1 के लिए सेटअप है ताकि आप सुरक्षित रूप से उपयोग कर सकें;

http://dev.twipler.com/twitter_prompt/index.php 
+0

ट्विटर प्रति OAuth 1.0a प्रति गतिशील oauth_callback URL का समर्थन करता है। http://tools.ietf.org/html/rfc5849#section-2.1 – abraham

1

@Ian, ट्विटर अब 127.0.0.1 की अनुमति देता है और कुछ अन्य हालिया परिवर्तन किए हैं।

@jtymann, .. यहाँ मेरा उत्तर की जाँच करें और देखें कि क्या वह मदद करता है

Twitter oauth_callback parameter being ignored!

जीएल

जिंगल

1

मुझे और भी 401 त्रुटि हो रही थी करने के लिए .. लेकिन इसकी संकल्प लिया ट्विटर पर अपने आवेदन को पंजीकृत करने के दौरान आपको कॉलबैक यूआरएल देना होगा ... http://localhost:8080 की तरह।

मैंने जावा का उपयोग करके यह किया है ... तो मेरा कोड है: स्ट्रिंग CallbackURL = "http: // localhost: 8080/tweetproj/index.jsp"; प्रदाता। पुनर्प्राप्ति RequestToken (उपभोक्ता, CallbackURL);

जहां tweetproj अपने प्रोजेक्ट नाम है और index.jsp सिर्फ एक jsp पेज है ...

आशा इस मई यू में मदद करता है ...

0

उपयोगकर्ता के बाद twitter.com पर आवेदन अधिकृत करता है और वे आपके कॉलबैक यूआरएल पर वापस आते हैं, आपको एक्सेस टोकन के लिए अनुरोध टोकन का आदान-प्रदान करना होता है।

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