के साथ एक एक्सेस टोकन प्राप्त करना मैं Oumb-Ruby का उपयोग Tumblr एप्लिकेशन के साथ OAuth प्रमाणीकरण करने के लिए कर रहा हूं। मैं कोड लिखने में सक्षम हूं जो ओएथ के विभिन्न चरणों के माध्यम से प्रगति करता है, लेकिन मुझे टोकन तक पहुंच नहीं मिल सकती है या वास्तव में अनुरोध नहीं किया जा सकता है। मैं एक अनुरोध कुंजी प्राप्त कर सकता हूं, उपयोगकर्ता को प्रमाणीकरण और पहुंच प्रदान करने के लिए Tumblr पर रीडायरेक्ट कर सकता हूं, और एक प्रमाणित अनुरोध कुंजी प्राप्त कर सकता हूं। लेकिन मैं उससे कहीं ज्यादा नहीं मिल सकता।OAuth-Ruby और Tumblr API (Rails 3)
मैंने अपना टंबलर एप्लिकेशन पंजीकृत किया है;
- OAuth उपभोक्ता कुंजी:: चलो इस सवाल यह है कि यह मेरा पीछा कुंजी के साथ प्रदान की गई है के लिए मान लें @oauth_consumer_key
- गुप्त कुंजी:
@secret_key (मैं वास्तविक मान है, लेकिन मैं कर रहा हूँ उन्हें स्पष्ट कारणों से यहां छुपाया गया है।)
मैं एक नियंत्रक के भीतर निम्न कोड चला रहा हूं जो उपयोगकर्ता द्वारा एक फॉर्म सबमिट करता है, जो @tumblog चर में स्टोर की जानकारी बनाता है:
#0. provided when registering application
@key = @oauth_consumer_key
@secret = @secret_key
@site = 'http://www.tumblr.com'
@consumer = OAuth::Consumer.new(@key, @secret,
{ :site => @site,
:request_token_path => '/oauth/request_token',
:authorize_path => '/oauth/authorize',
:access_token_path => '/oauth/access_token',
:http_method => :post })
if @consumer
#1. get a request token
@request_token = @consumer.get_request_token;
session[:request_token] = @request_token
session[:tumblog] = @tumblog
#2. have the user authorize
redirect_to @request_token.authorize_url
else
flash[:error] = "Failed to acquire request token from Tumblr."
render 'new'
end
यह कोड मुझे टंबलर पर सही पृष्ठ पर ले जाता है, जहां उपयोगकर्ता उपयोगकर्ता के खाते में मेरे एप्लिकेशन तक पहुंच प्रदान करता है या अस्वीकार करता है। उपयोगकर्ता को अनुदान पहुंच मानते हुए, टंबलर ने मेरे आवेदन पर वापस रीडायरेक्ट किया, जब मैंने टंबलर के साथ एप्लिकेशन पंजीकृत किया था। उस बिंदु पर, सब कुछ खूबसूरती से काम करता है।
मेरे OAuth कॉलबैक नियंत्रक में निम्न कोड चलाता है:
if params[:oauth_token] && params[:oauth_verifier]
@tumblog = session[:tumblog]
@request_token = session[:request_token]
#3. get an access token
@access_token = @request_token.get_access_token
. . . .
end
चरण 3 में, वहाँ एक समस्या है। मैं वास्तव में लाइन के साथ एक पहुंच टोकन प्राप्त नहीं कर पा रहे:
@access_token = @request_token.get_access_token
कोई मुझे बता सकते हैं मैं पहुंच टोकन प्राप्त करने क्या करने की जरूरत? जब मैं उस पंक्ति को चलाता हूं, तो मुझे ओएथ :: अनधिकृत त्रुटि मिलती है।
मैं वास्तव में किसी भी सलाह की सराहना करता हूं। मैं गुगल रहा हूं और कई दिनों के लिए अलग-अलग चीजों की कोशिश कर रहा हूं। धन्यवाद!
, अब मैं यह पता लगा है बस पोस्ट करने के बाद। अन्य लोगों को लाभ पहुंचाने के लिए जो एक समान नाव में हो सकते हैं, समस्या यह है कि टंबलर ओएथ कार्यान्वयन oauth_verifier कुंजी की अपेक्षा कर रहा है जो यह आपके द्वारा आपूर्ति की गई ओथ कॉलबैक पर जाता है। तो, कोड @access_token = @ request_token.get_access_token को @access_token = @ request_token.get_access_token ({: oauth_verifier => पैराम्स [: oauth_verifier]} में बदला जाना चाहिए)। –
वाह, इससे मुझे बहुत मदद मिली। टंबलर को अपने एपीआई पेज पर इसका जिक्र करना चाहिए, क्योंकि मैंने इस सटीक मुद्दे को समझने के लिए कुछ अच्छे घंटों बर्बाद कर दिए थे। – dreadpirateryan