ruby रेल ऐप में httparty के साथ मूल प्रमाणीकरण का उपयोग कैसे करें?




ruby-on-rails-3 (2)

बुनियादी प्रमाणीकरण के साथ 'httparty' का कमांड लाइन संस्करण सरल और बढ़िया काम करता है:

httparty -u username:password http://example.com/api/url

लेकिन अब मैं एक रेल ऐप के भीतर से HTTParty.get कॉल को मूल लेख जोड़ सकता हूं। सबसे पहले, परीक्षण उद्देश्यों के लिए, मैं नियंत्रक में लॉगिन प्रमाण-पत्रों को कड़ी मेहनत करना चाहता हूं। यह सुनिश्चित करने के लिए कि यह काम करता है। लेकिन मुझे कोई दस्तावेज या उदाहरण नहीं मिल रहा है कि आप इन्हें कैसे पास कर सकते हैं।

क्रेडेंशियल्स के बिना एक HTTParty.get ठीक काम करता है:

@blah = HTTParty.get("http://twitter.com/statuses/public_timeline.json")

लेकिन मैं नहीं देखता कि मैं इस पर भिन्नता कैसे बना सकता हूं जो उपयोगकर्ता नाम: पासवर्ड भाग स्वीकार करता है।

मेरे लिए अगली चुनौती (रूबी / रेल के लिए बहुत नया है) उपयोगकर्ता के प्रमाण पत्र को उपयोगकर्ता के रूप में प्राप्त करना है और इसे गतिशील रूप से पास करना है, लेकिन मेरे लिए सबसे महत्वपूर्ण यह है कि अब यह कठिन कोडित संस्करण को काम करने के लिए प्राप्त करें।


दो बिंदु,

  1. यदि आप ट्विटर की एपीआई पर हमला कर रहे हैं, जब तक कि मैं गलत नहीं हूं, मुझे नहीं लगता कि वे मूल लेख की अनुमति देते हैं :( तो आप OAuth साइन-इन के लिए OmniAuth तरह कुछ देखना चाहते हैं। आपको HTTParty या साइन- इसके लिए, आप ट्विटर साइन-इन से लिंक करते हैं और उपयोगकर्ता वहां क्रेडेंशियल दर्ज करता है, फिर ट्विटर प्रमाणीकृत हो जाने पर आपके ऐप पर कॉलबैक अनुरोध भेजता है। OmniAuth आपके लिए अधिकांश काम करता है, आप केवल उस जानकारी को खींचते हैं जिसकी आपको आवश्यकता है यह आपको कॉलबैक मार्ग में क्या देता है।

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

ऐसा करने का एक सामान्य तरीका उन्हें एक config/omniauth.yml फ़ाइल में config/omniauth.yml है जिसे स्रोत नियंत्रण में चेक नहीं किया जाता है:

twitter:
  key: CONSUMER_KEY
  secret: CONSUMER_SECRET

और फिर उन्हें प्रारंभकर्ता config/initializers/omniauth.rb में लोड करें:

consumers = YAML.load("#{Rails.root}/config/omniauth.yml")

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, consumers['twitter']['key'], consumers['twitter']['secret']
end

आप मूल ऑथ उपयोगकर्ता नाम / पासवर्ड लोड करने के साथ एक समान दृष्टिकोण ले सकते हैं, बस उन्हें किसी ऑब्जेक्ट में चिपकाएं जहां आप HTTParty कॉल करते हैं, वहां से आप तक पहुंच पाएंगे।


auth = {:username => "test", :password => "test"}
@blah = HTTParty.get("http://twitter.com/statuses/public_timeline.json", 
                     :basic_auth => auth)




httparty