2011-02-15 10 views
5

के साथ एक्सेस टोकन में कैसे चालू करें I रेलवे ऐप पर मेरी रूबी में Evernote प्रमाणीकृत करने के लिए OAuth मणि ​​में उपयोग करने का प्रयास कर रहा हूं। मैं ट्विटर - http://blog.brijeshshah.com/integrate-twitter-oauth-in-your-rails-application/ प्रमाणीकरण के लिए एक ट्यूटोरियल का उपयोग कर रहा हूं क्योंकि मुझे Evernote एक नहीं मिला।OAuth_token और oauth_verifier को OAuth मणि ​​

अब तक मैं अपने आवेदन अधिकृत करने के लिए उपयोगकर्ता मिल गया है और अब अस्थायी साख है:

customer = OAuth::Consumer.new("xxx", "xxx",{ 
    :site=>"https://sandbox.evernote.com/", 
    :request_token_path => "/oauth", 
    :access_token_path => "/oauth", 
    :authorize_path => "/OAuth.action"}) 
@request_token = customer.get_request_token(:oauth_callback => "http://localhost:3000/create_evernote_step_2") 

session[:request_token] = @request_token.token 
session[:request_token_secret] = @request_token.secret  

redirect_to @request_token.authorize_url 

तो अब मैं oauth_token और oauth_verifier है, और पहुँच टोकन में इन चालू करना होगा। ट्विटर ट्यूटोरियल का यह हिस्सा ट्विटर पर विशिष्ट लगता है, इसलिए अब मुझे यकीन है कि Evernote के मामले में प्रक्रिया कैसे करें। क्या कोई मेरी मदद कर सकता है?

उत्तर

5

Evernote के नमूना कोड में अब रूबी ओएथ उदाहरण है जो ओथ मणि का उपयोग करता है। आप http://www.evernote.com/about/developer/api/ से नमूना कोड डाउनलोड कर सकते हैं। इस मामले में, अगले कदम के लिए टोकन क्रेडेंशियल के लिए अस्थायी साख का आदान-प्रदान करने के लिए है:

access_token = @request_token.get_access_token(:oauth_verifier => oauth_verifier) 

oauth_verifier कॉलबैक URL के भाग के रूप में अपने आवेदन करने के लिए पारित कर दिया है।

+1

कॉलबैक में आपको @request_token कैसे मिलता है? क्या आप ऑब्जेक्ट को सत्र में छीनते हैं, या किसी भी तरह इसे फिर से बनाते हैं? – alltom

+0

हमारे नमूना कोड में हम इसे सत्र में छीनते हैं, लेकिन आप इसे फिर से बनाने में सक्षम होना चाहिए, वहां जादुई चल रहा कुछ भी नहीं है। वास्तविक अनुरोध टोकन (ऑब्जेक्ट जिसे मैंने request_token नाम दिया नहीं है) कॉलबैक यूआरएल में oauth_token क्वेरी स्ट्रिंग पैरा के रूप में होगा। – Seth

+0

किसी को भी आपके सत्र में संग्रहीत डेटा तक पहुंचने में समस्याएं हैं? मैं इसे कॉलबैक के लिए करने का प्रयास करता हूं, लेकिन कॉलबैक एक्शन में * शून्य * आता है। –

0

हे मैन, मैंने इस तरह एक रास्ता भी शुरू किया, जहां मैं ओथ को अपने अन्य ऐप्स में से एक में एकीकृत कर रहा था।

आपको oauth-plugin on github की जांच करनी चाहिए क्योंकि यह आपके लिए वह व्यवसाय संभालती है।

यह आपको सबसे अधिक मदद कर सकता है, और यदि कोई 'अजीब' ओथ प्रदाता है जो "लोकप्रिय" नहीं है तो यह आपको इसे कॉन्फ़िगरेशन फ़ाइल में जोड़ने की अनुमति देता है। मैंने यही किया है।

एक सुझाव है ओथकंसमर्स नियंत्रक में सभी विधियों को ओवरराइट करना और आवश्यकतानुसार उन्हें 'ट्वीक' करना। मुझे पता है कि मुझे इसे और अच्छी तरह से करना था, यह देखना आसान था कि उसने अपनी प्लगइन के साथ क्या किया और उसे वहां से ट्विक किया। नरक, हो सकता है कि उसके पास एक रास्ता भी है जो आप अपनी सटीक समस्या के लिए अपने कोड में अनुसरण कर सकते हैं और आपको उसकी सभी प्लगइन की आवश्यकता नहीं होगी (क्योंकि वह ओथ मणि का भी उपयोग करता है)।

+0

आपके उत्तर के लिए धन्यवाद। मैं ओथ मणि का उपयोग करना चाहता हूं क्योंकि मैं ओथ कंसुमर्स कंट्रोलर और अतिरिक्त चीजें उत्पन्न नहीं करना चाहता हूं, मेरे पास पहले से प्रमाणीकरण के लिए एक मॉडल है क्योंकि मैं ओमनीएथ का उपयोग कर रहा हूं और मैं मौजूदा मॉडल में मैन्युअल रूप से एवरोनी एक्सेस टोकन को मैन्युअल रूप से स्टोर करना चाहता हूं। – ben

0

Evernote से उपयोगी उदाहरण के अलावा, आप एक यूनिट परीक्षण में "रीडायरेक्ट उपयोगकर्ता, उन्हें पहुंच प्रदान करने, रीडायरेक्ट वापस पाने" को स्वचालित करना भी चाहेंगे। मुझे लगता है कि थोड़ा चुनौतीपूर्ण पाया है, तो इसलिए यहाँ करने के लिए सभी कोड पोस्ट किया है:

Evernote OAuth in a unit test

0

द्वारा सेठ के जवाब accesstoken हो रही हैं, वहीं आप अनुरोध टोकन, जबकि प्राधिकरण यूआरएल पैदा आपने बनाया है जो की जरूरत है। आपको सत्र ऑब्जेक्ट में स्टोर करने की आवश्यकता है। यदि आप सीधे स्टोर करते हैं, तो संग्रहीत अनुरोध टोकन पुनर्प्राप्त करते समय यह त्रुटि फेंक देगा। तो आपको इसे cache_store में स्टोर करने की आवश्यकता है।

के लिए अपने रेल app में Evernote एपीआई के लिए अनुरोध टोकन और पहुँच टोकन से निपटने के लिए, आप नीचे दिए चरणों का पालन करें कर सकते हैं:

आप सेटअप करने के लिए Evernote से अपने OAuth टोकन को बचाने के लिए एक सत्र cache_store की जरूरत है। config/initializers/session_store.rb के अंत में निम्नलिखित जोड़ें:

Rails.application.config.session_store :cache_store, key: ‘_rails-evernote_session’ 

इस तरह, अपने सत्र में वस्तुओं स्टोर कर सकते हैं और आप इसे प्राप्त कर सकते हैं जब आवश्यक।

अधिक विस्तृत जानकारी के लिए, आप निम्न ट्यूटोरियल देख सकते हैं।- https://codepen.io/asommer70/post/export-evernote-notes-with-rails