2011-03-01 21 views
7

के साथ मॉडलिंग उपयोगकर्ताओं को मैं रेल 3 का उपयोग कर एक वेब एप्लिकेशन बना रहा हूं। मेरे पास अपना स्वयं का उपयोगकर्ता साइनअप, लॉगिन और प्रमाणीकरण ठीक काम कर रहा है और मैं ओउथ 2 कार्यान्वयन जोड़ना चाहता हूं ताकि लोग फेसबुक से जुड़ सकें और लॉगिन कर सकें/कम चरणों के साथ साइनअप।Oauth 2

मेरे पास सफलतापूर्वक इस काम की शुरुआत है। अब तक, मैं उपयोगकर्ताओं को प्रमाणीकृत करने के लिए फेसबुक प्राप्त कर सकता हूं और मुझे उनकी जानकारी तक पहुंचने की अनुमति देता हूं। मैंने ट्विटर एथ को अभी तक स्थापित करने की कोशिश नहीं की है, लेकिन मुझे लगता है कि यह एक समान फैशन में काम करेगा।

जो मैं अब सोच रहा हूं वह यह है कि इसे अपने मौजूदा उपयोगकर्ता मॉडल में एकीकृत कैसे करें, जिसमें मूल रूप से उन उपयोगकर्ताओं की एक तालिका होती है जिनके पास ईमेल, नाम और पासवर्ड हैं।

मैं अपने उपयोगकर्ताओं तालिका छोड़ देना चाहिए के रूप में यह होता है और एक पहुँच प्रदाता तालिका सेट:

id | user_id | provider_id | access_key 
--------------------------------------- 
1 | 4 |  1  | xyz 
2 | 4 |  2  | pqr 
3 | 7 |  1  | dfr 

और मान लीजिए कि एक "उपयोगकर्ता फेसबुक जानकारी" तालिका जहां मैं एक उपयोगकर्ता है जहाँ से gleaned किया गया के रूप में के बारे में जानकारी की दुकान फेसबुक ग्राफ में उस उपयोगकर्ता को एक्सेस करना?

इस तरह से मैं उपयोगकर्ता तालिका को मूल जानकारी के साथ सामान्यीकृत रख सकता हूं, जिसमें प्रत्येक उपयोगकर्ता को फेसबुक के जरिए कनेक्ट किया गया है या नहीं (नाम, ईमेल, पासवर्ड) और पूरक है कि डेटा के साथ डेटा उनके फेसबुक प्रोफाइल से डेटा हो उपलब्ध?

क्या ऐसा करने का कोई बेहतर तरीका है? क्या इस प्रकार के डेटाबेस मॉडल (क्वॉरा सोचो) को डिजाइन करने के लिए वहां कोई अच्छी मार्गदर्शिका या ट्यूटोरियल है? मैं एक PHP ट्यूटोरियल भी बीटीडब्ल्यू संभाल सकता है!

खुले अंत प्रश्न के लिए खेद है।

उत्तर

6

यदि आप ट्विटर और फेसबुक दोनों करने की कोशिश कर रहे हैं तो आप अपने ओएथ क्लाइंट के लिए साइनेट या ओमनीएथ पर विचार करना चाहेंगे। मैं सिग्नेट की ओर पक्षपातपूर्ण हूं, क्योंकि मैंने इसे लिखा है, लेकिन ओमनीएथ अब के लिए बेहतर विकल्प हो सकता है क्योंकि यह आपके द्वारा किए जाने वाले प्रयासों के आधार पर थोड़ी देर के आसपास रहा है।

डेटा मॉडलिंग के लिए, आपको सही विचार मिल गया है। यद्यपि आपको शायद इसे थोड़ा और सामान्य बनाना होगा। केवल access_key के बजाय, आपको शायद access_token और OAuth 2 के लिए संभावित रूप से refresh_token की आवश्यकता है। इस बीच, ओथ 1 एक क्रेडेंशियल कुंजी/गुप्त जोड़ी का उपयोग करता है। तो शायद ऐसा कुछ (प्राथमिक और विदेशी कुंजी छोड़ना):

auth_scheme | access_token | refresh_token | key | secret | username | password 
------------------------------------------------------------------------------- 
oauth_1  |    |    | 123 | 456 |   | 
oauth_2  | 123   |    |  |  |   | 
oauth_2  | 123   | abcd   |  |  |   | 
xauth  |    |    |  |  | abcd  | 12345 
clientlogin |    |    |  |  | abcd  | 12345 
+0

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