2017-02-19 16 views
11

मैं एक मोबाइल ऐप विकसित कर रहा हूं और वर्तमान में एपीआई की स्टेटलेसनेस बनाए रखने के लिए जेडब्ल्यूटी पर निर्भर करता हूं। एपीआई मोबाइल और वेब उपकरणों द्वारा उपभोग किया जाता है। उपयोगकर्ता पंजीकरण के लिए अपने ईमेल और पासवर्ड का उपयोग करेंगे।लैरवेल 5.3 - सामाजिक लॉगिन संदेह

मुझे इस API में सामाजिक लॉगिन विकल्प लागू करने के लिए असाइन किया गया है। मैं अपने निम्नलिखित संदेहों को साफ़ करना चाहता हूं।

1) जब सामाजिक लॉगिन का उपयोग किया जाता है, तो मैं एक टोकन [जेडब्ल्यूटी] की तरह कैसे उत्पन्न कर सकता हूं जो क्लाइंट के अंत में संग्रहीत किया जाएगा? यह टोकन लॉगिन के बाद सभी बाद के अनुरोधों के साथ भेजना है।

2) यदि सामाजिक प्लेटफ़ॉर्म ईमेल पते प्रदान नहीं कर रहे/साझा नहीं कर रहे हैं [जो हमारी प्राथमिक कुंजी में से एक है], तो मैं कौन सी जानकारी संग्रहीत करूं?

+0

द्वारा लॉग इन किया गया है, तो सामाजिक लॉगिन केवल यह सत्यापित करने के लिए है कि कौन प्रमाणित है। उस विशेष उपयोगकर्ता के लिए आपके डीबी में अभी भी एक उपयोगकर्ता रिकॉर्ड होगा। तो लॉगिन करने के बाद आप जेडब्ल्यूटी को उसी तरह बना देंगे जैसा आप हमेशा करते हैं। ईमेल पता नहीं देने के बारे में आप किस मंच से चिंतित हैं? बस प्रत्येक सेवा के बारे में कुछ प्रकार की उपयोगकर्ता आईडी भी होगी, इसलिए आपकी उपयोगकर्ता तालिका में 'facebook_id'' twitter_id' आदि जैसे फ़ील्ड हो सकते हैं ... – Pitchinnate

+0

अधिकांश सामाजिक प्लेटफॉर्म आपको ईमेल पता प्रदान करते हैं (ट्विटर को छोड़कर मैं विश्वास करता हूं)। मुझे लगता है कि आप वेब ऑब्जेक्ट में सफल राउंडट्रिप के बाद अपने ऐप पर रीडायरेक्ट कर सकते हैं। –

+0

@logeeks क्या आपको अपने प्रश्न का उत्तर मिला? –

उत्तर

1

संक्षिप्त उत्तर

  1. आप अपने मानक उपयोगकर्ता तालिका करने के लिए सामाजिक लॉगिन उपयोगकर्ता लिंक और (जेडब्ल्यूटी) टोकन जेनरेट के रूप में आप पहले से ही
  2. सामाजिक लॉगिन कर रहे हैं हमेशा एक आईडी की पहचान वापस लौटाना होगा सामाजिक पर उपयोगकर्ता। एक बाहरी तालिका में, आपको की user_id मुख्य उपयोगकर्ताओं तालिका

विस्तृत उत्तर

के साथ एक साथ, सामाजिक इस्तेमाल किया और social_id की दुकान के क्रम में एक बेहतर करने के लिए शुरू से ही शुरू करते हैं सभी मुद्दों को देखें और अपने संदेह के सभी पहलू को साफ़ करें।

बेसिक उपयोगकर्ता तालिका
आमतौर पर आप एक उपयोगकर्ता तालिका इस तरह से (सरलीकृत)

  • user_id में संरचित है
  • लॉगिन (ईमेल)
  • पासवर्ड
  • jwt_token

जब उपयोगकर्ता लॉगिन , आप jwt_token फ़ील्ड को अपडेट करने जा रहे हैं और इसे अपने एपीआई का उपभोग करने के लिए उपयोगकर्ता को वापस कर देंगे।

को लागू सामाजिक लॉगिन
एक अच्छा दृष्टिकोण सामाजिक लॉगिन जोड़ने के लिए नया social_logins तालिका इस प्रकार संरचित बनाने के लिए है (सरलीकृत)

  • सामाजिक
  • social_id
  • user_id

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

सबसे पहले आपको यह करना है कि सामाजिक ने आपको उपयोगकर्ता का ईमेल पता वापस कर दिया है या नहीं।

  • एक ईमेल लौटे हैं, तो आपके उपयोगकर्ताओं तालिका में उस ईमेल पते के साथ एक उपयोगकर्ता के लिए देखने के लिए और उपयोगकर्ता के साथ एक रिश्ता बनाने user_id क्षेत्र
  • का उपयोग कर ईमेल खाली है, तो "social_logins" तालिका में एक रिकॉर्ड बनाने के , आप एक "नकली" मेल पता बना उपयोगकर्ता तालिका में एक नया उपयोगकर्ता बनाना होगा (एक मानक विधि के साथ - यादृच्छिक नहीं) और फिर अपने social_login रिकॉर्ड बनाने

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

+0

इस दिन लार्वेल सोशलाइट का उपयोग करके साइटपॉइंट पर वास्तव में एक अच्छा लेख लिखा गया है https://www.sitepoint.com/easily-add-social-logins-to-your-app-with-socialite/ –

0

कुछ सामाजिक नेटवर्क इसके बजाय उपयोगकर्ता प्रमाणीकरण को प्रतिनिधि या आपके सिस्टम में प्रमाण-पत्र की आवश्यकता होने की अनुमति देते हैं। जब उपयोगकर्ता लॉग इन करता है, तो बाहरी प्लेटफार्म आपको एक एक्सेस टोकन प्रदान करेगा जिसका उपयोग उपयोगकर्ता की कुछ जानकारी प्राप्त करने के लिए किया जा सकता है।

उपयोगकर्ता को अपने सिस्टम में पंजीकृत करने के लिए इस डेटा का उपयोग करें। उपलब्ध कराई गई पहुंच टोकन संलग्न करें। आपके द्वारा अनुरोधित अनुमतियों के आधार पर, आप सोशल प्लेटफॉर्म में अतिरिक्त ऑपरेशन करने के लिए टोकन का उपयोग कर सकते हैं।

फिर वेब/मोबाइल ऐप में प्रमाणीकरण टोकन के रूप में उपयोग करने के लिए जेडब्ल्यूटी जारी करें जहां उपयोगकर्ता लॉग ऑन है। ध्यान दें कि यह जेडब्ल्यूटी प्रमाणीकरण प्रदाता द्वारा भेजे गए एक्सेस टोकन से स्वतंत्र होना चाहिए। sub या exp जैसे ब्याज के कुछ दावों को शामिल करें और इसे एक गुप्त कुंजी के साथ साइन करें। उदाहरण

{ 
    "sub": "userid",  //unique user id assigned in your system 
    "name": "User name" //Name provided by social 
    "iss": "issuer",  //you are the issuer 
    "exp": 1300819380, //Expiration date 
    "login":"facebook" //login method used 
    } 

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

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