2011-10-20 12 views
6

मैं फेसबुक प्रमाणीकरण करने के लिए devise/omniauth का उपयोग कर रहा हूं और महान काम करता हूं। हालांकि, मैं एक प्रवाह जोड़ना चाहता हूं जहां एक मौजूदा (गैर-फेसबुक) उपयोगकर्ता के पास फेसबुक के साथ अपने खाते को जोड़ने की क्षमता हो। इसके लिए विभिन्न फेसबुक अनुमतियों की आवश्यकता होगी। तो मैं दो बातेंफेसबुक के लिए omniauth का उपयोग मौजूदा उपयोगकर्ता को विभिन्न अनुमतियों के साथ कनेक्ट करें

  1. कैसे फेसबुक वर्तमान उपयोगकर्ता
  2. अनुरोध उपयोगकर्ता से अलग विस्तारित अनुमतियाँ (वसीयत विन्यास फ़ाइल में निर्दिष्ट उन से अलग लॉग आउट होने के बिना कनेक्ट अनुरोध करने के लिए चिंतन करना/omniauth उपयोग करने के लिए खोजने के लिए नहीं कर पा रहे)

किसी भी विचार? धन्यवाद

उत्तर

2

उत्तर के लिए 1 बहुत आसान है: बस इस

# If a user is signed in then he is trying to link a new account 
    if user_signed_in? 
     if authentication.persisted? # This was a linking operation so send back the user to the account edit page 
     flash[:success] = I18n.t "controllers.omniauth_callbacks.process_callback.success.link_account", 
           :provider => registration_hash[:provider].capitalize, 
           :account => registration_hash[:email] 
     else 
     flash[:error] = I18n.t "controllers.omniauth_callbacks.process_callback.error.link_account", 
           :provider => registration_hash[:provider].capitalize, 
           :account => registration_hash[:email], 
           :errors =>authentication.errors 
     end 
     redirect_to edit_user_account_path(current_user) 

तरह omniauth_callbacks_controller :: process_callback विधि में एक है, तो पथ को जोड़ने यह वही है मैं अपने आवेदन में करते हैं और इसे ठीक काम करता है है।

प्रश्न 2 के बारे में मुझे नहीं पता कि 2 अलग-अलग फेसबुक प्रमाणीकरण कॉन्फ़िगरेशन का समर्थन कैसे करें, हालांकि मुझे यह देखने में कठिनाई होती है कि यह उपयोगकर्ताओं के लिए उपयोगी कैसे है क्योंकि उन्हें दोनों पथों में लगातार अनुभव की आवश्यकता है: "फेसबुक का उपयोग करके साइन इन करें" और "लिंक फेसबुक पर आपका खाता "। (यदि आप अभी भी इस पथ को आगे बढ़ाना चाहते हैं तो एक विचार है कि मैं अपनी स्वतंत्र कुंजी और कॉन्फ़िगरेशन के साथ एक नया फेसबुक एप्लिकेशन बनाना चाहता हूं ...)

इस सहायता की आशा करें। बहु स्तरीय अनुमतियों को लागू करने के

+1

जवाब देने के लिए, वहाँ साइट पर काम करता है कि कम या ज्यादा अनुमतियों की आवश्यकता होगी रहे हैं "मैं कठिन समय को देखकर कैसे है कि क्योंकि वे एक सुसंगत अनुभव की जरूरत है उपयोगकर्ताओं के लिए उपयोगी है" - उदाहरण के लिए, तुम सिर्फ एक बुनियादी लॉगिन चाहते हैं, हम कम से कम अनुमतियों के लिए पूछेंगे। हालांकि, अगर आप कुछ फैनसीयर चाहते हैं (उदाहरण के लिए प्रोफाइल से कुछ विवरण प्राप्त करें), तो हमें और अनुमतियों के लिए पूछना होगा। – katzmopolitan

0

एक सरल तरीका (अलावा omniauth करने के लिए, अगर आप चाहते हैं) फेसबुक जावास्क्रिप्ट एसडीके उपयोग करने के लिए है। आप बस अलग-अलग "स्कोप" पैरामीटर निर्दिष्ट कर सकते हैं, जो आपके इच्छित प्रत्येक कॉल पर आवश्यक अनुमतियां निर्दिष्ट करता है। मैं जो कर रहा हूं वह omniauth अनुमतियों का मूल सेट प्रदान कर रहा है, फिर के बाद उपयोगकर्ता ने omniauth (और इस प्रकार हमारे डेटा को हमारे डीबी में संग्रहीत किया) के माध्यम से कनेक्ट किया है, अगर आगे की अनुमति की आवश्यकता है, तो हम उन्हें जेएस-आधारित बटन दिखाते हैं जो अनुमतियों के विस्तारित सेट प्रदान करते हैं। यदि आप यह जांचना चाहते हैं कि उपयोगकर्ता ने आपको कौन सी विशेष अनुमति दी है, तो आप बस me/permissions API कॉल का उपयोग कर सकते हैं।

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