2011-10-02 4 views
57

बुनियादी प्रमाणीकरण के साथ 'httparty' के कमांड लाइन संस्करण सरल और अच्छा काम करता है:रेल ऐप में httparty के साथ मूल प्रमाणीकरण का उपयोग कैसे करें?

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

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

एक HTTParty.get साख के बिना ठीक काम करता है:

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

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

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

उत्तर

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

धन्यवाद, काम करता है! क्या आप इसे किसी प्रकार के HTTParty दस्तावेज़ से प्राप्त करते हैं, या इसे 'मानक' रेल सिंटैक्स माना जाता है जिसे मुझे मास्टर करने की आवश्यकता है ... :-) –

+2

मुझे इसे इस उदाहरण से मिला https://github.com/jnunemaker/ httparty/blob/master/example/twitter.rb –

+3

और 'auth = {username:" test ", पासवर्ड:" test "} 'रूबी 1.9 के साथ अच्छी तरह से काम करता है। – Joe

-1

दो अंक,

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

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

    twitter: 
        key: CONSUMER_KEY 
        secret: CONSUMER_SECRET 
    

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

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

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 कॉल करते हैं, वहां से आपके पास पहुंच होगी।

+0

हाय एरिक, अतिरिक्त जानकारी के लिए धन्यवाद। ट्विटर यूआरएल केवल उदाहरण के लिए है, क्योंकि असली एपीआई मैं बात कर रहा हूं एक निजी प्रणाली है।यह मेरे लिए काम करता है, और उम्मीद है कि उन लोगों के लिए जो httpART को आरईएसटी क्लाइंट के रूप में उपयोग करते हैं। संभावित भ्रम के लिए खेद है! आपकी अतिरिक्त जानकारी भी दिलचस्प है, जैसे ही मैं आवेदन में आगे हूं, उसके साथ काम करूंगा। –

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