2015-02-17 10 views
7

मैं ऐप बनाने के लिए Ionic framework का उपयोग कर रहा हूं और अब मैं फेसबुक (oauth2) लॉगिन जोड़ना चाहता हूं। मैंने पहले ही ओएथ का उपयोग करके अपनी वेबसाइट पर एक फेसबुक लॉगिन लागू किया है; मैं बस उपयोगकर्ता को प्रासंगिक फेसबुक यूआरएल पर रीडायरेक्ट करता हूं, उन्हें वहां अपने क्रेडेंशियल्स दर्ज करने दें और फिर मुझे अपने (Flask) बैकएंड में टोकन प्राप्त करें। यह एक आकर्षण की तरह काम करता है।आयनिक/कोणीय में OAuth facebook लॉगिन कैसे जोड़ें?

अब मुझे आश्चर्य है कि मैं अपने आयनिक/कॉर्डोवा/कोणीय ऐप में इसे कैसे कार्यान्वित कर सकता हूं। ,

  • अनुप्रयोग में आयोनिक/Cordova वेबव्यू भीतर फेसबुक के मोबाइल संस्करण के लिए उपयोगकर्ता को पुन: निर्देशित मेरे ऐप प्रमाणित करने (जैसे मैं अपने सामान्य वेबसाइट में क्या): मैं यह देखने के रूप में अब कुछ विकल्प देखते हैं और उसके बाद उपयोगकर्ता को फिर से आयनिक ऐप पर वापस कर दें। मुझे यह महसूस हो गया है कि यह करने का सही तरीका नहीं है।
  • फेसबुक के जावास्क्रिप्ट प्रमाणीकरण का उपयोग करें जो ऐप पर टोकन देता है। इसके बाद मैं इसे बाद में उपयोग के लिए सहेजने के लिए अपने सर्वर पर टोकन पोस्ट कर सकता हूं।
  • उपयोगकर्ता को आयनिक ऐप में अपना उपयोगकर्ता नाम और पासवर्ड डालने दें और उनको अपने सर्वर पर पोस्ट करें और फिर उन लोगों का उपयोग फेसबुक पर उपयोगकर्ता को प्रमाणीकृत करने और इसके लिए टोकन प्राप्त करने के लिए करें। यह स्पष्ट रूप से ओएथ के उद्देश्य को पूरी तरह से निंदा करता है, लेकिन मुझे लगता है कि यह काम करेगा।
  • मैंने फेसबुक लॉगिन को कार्यान्वित करने के तरीके के बारे में this article on the Ionic blog पढ़ा है, लेकिन यह Auth0 plugin का उपयोग करता है, जिसका मैं उपयोग नहीं करना चाहता (यह पैसा खर्च करता है और मैं किसी अन्य कंपनी पर निर्भर नहीं होना चाहता)।
  • फिर भी एक और विकल्प है जो मैं के बारे में पता नहीं कर रहा हूँ ..

तो मैं अब आश्चर्य; मेरे आयनिक ऐप में लागू करने के लिए सबसे अच्छा तरीका क्या है (ओएथ आधारित) फेसबुक लॉगिन और क्यों? सभी सुझावों का स्वागत है!

उत्तर

8

आप आयोनिक फ्रेमवर्क के ngCordova पुस्तकालय में $cordovaOauth.facebook का उपयोग कर सकते:

https://blog.nraboy.com/2015/02/make-facebook-mobile-app-ionic-framework/ http://ionicframework.com/blog/oauth-ionic-ngcordova/:

http://www.ngcordova.com

यहाँ दो संदर्भों है कि यह प्रयोग पर सही दिशा में डाल सकते हैं

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

सादर,

+0

धन्यवाद! इस बीच में मैं openFB (https://github.com/ccoenraets/OpenFB) के साथ प्रयोग कर रहा हूं। तो अगर मैं इसे सही ढंग से समझता हूं; उपयोगकर्ता के लिए ऐप के भीतर से एफबी लॉगिंग पर रीडायरेक्ट करने का सामान्य तरीका है, और जब सफलतापूर्वक लॉग इन हो रहा है, तो ऐप स्वयं टोकन को अपने सर्वर पर भेज सकता है ताकि मैं उपयोगकर्ता को लॉग इन कर सकूं। क्या यह सही है? – kramer65

+0

यह आप जो चाहते हैं उसे पूरा करने के कई तरीकों में से एक है। दोनों समाधान काम करेंगे। –

+0

आयनिक मंच अब फेसबुक लॉगिन एम्बेड करता है: http://docs.ionic.io/v2.0.0-beta/docs/social-provider-facebook – TrtG

4

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

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

यह एक बहुत बुरा विचार होगा (जैसा कि आपने बताया है, यह ओएथ के सिद्धांतों का उल्लंघन करता है), और वास्तव में यह काम नहीं करेगा। कोई अंतराल नहीं है जहां आप प्रोग्रामेटिक रूप से फेसबुक को लॉगिन और पासवर्ड दे सकते हैं, और प्रतिक्रिया में एक टोकन प्राप्त कर सकते हैं (कानूनी रूप से, और स्क्रैपिंग के बिना)।इसके बजाए, टोकन प्राप्त करने के लिए उपयोगकर्ता इंटरैक्शन के साथ कॉलबैक की आवश्यकता होती है, चाहे वह फ्रंटेंड पर या बैकएंड पर किया जाए। two-factor authentication in Facebook के मामले पर विचार करें जहां उपयोगकर्ता को अपने मोबाइल फोन पर भेजे गए कोड को पुनर्प्राप्त करने और दर्ज करने की आवश्यकता है।

फेसबुक के जावास्क्रिप्ट प्रमाणीकरण का उपयोग करें जो ऐप पर टोकन देता है। इसके बाद मैं इसे बाद में उपयोग के लिए सहेजने के लिए अपने सर्वर पर टोकन पोस्ट कर सकता हूं।

यूप, इस तरह यह किया जाना चाहिए। इसे क्रॉस-क्लाइंट प्रमाणीकरण कहा जाता है। फेसबुक का एक पृष्ठ है जो explains auth tokens है जो अवधारणात्मक रूप से सहायक है और विभिन्न परिदृश्यों पर चर्चा करता है लेकिन दुर्भाग्यवश इसमें कई उपयोगी कोड खंड शामिल नहीं हैं।

आप लॉगिन प्रक्रिया के हिस्से के रूप में सीधे बैकएंड तक पहुंच टोकन पास कर सकते हैं। बैकएंड फिर टोकन को मान्य कर सकता है। मान लें कि आप बैकएंड पर मानक Flask-Security और Flask-Social पैकेज का उपयोग कर रहे हैं, आप फ्लास्क-सोशल लॉगिन दृश्य को अग्रसर से पारित टोकन का उपयोग करके उपयोगकर्ता को प्रमाणीकृत करने के लिए लपेट सकते हैं। आप इस जिस्ट में नमूना कोड पा सकते हैं: https://gist.github.com/lrettig/7ca94ba45961207a7bd3

यह भी ध्यान रखें कि यह टोकन आमतौर पर केवल कुछ घंटों के लिए मान्य है। यदि आपको उपयोगकर्ता की तरफ से फेसबुक एसडीके का उपयोग जारी रखने के लिए बैकएंड की आवश्यकता है, तो आपको swap it for a Long-Term token की आवश्यकता होगी।

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

+0

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

+0

संक्षिप्त उत्तर हाँ है। OAuth प्रमाणीकरण और प्रमाणीकरण दोनों प्रदान करता है। (ओपनआईडी के विरोध में जो केवल प्रमाणीकरण प्रदान करता है, सीएफ। Http://stackoverflow.com/questions/1087031/whats-the-difference-between-openid-and-oauth और https://en.wikipedia.org/wiki/ OAuth # OpenID_vs._pseudo-authentication_using_OAuth।) जब तक आप सुरक्षित रूप से प्रमाणीकृत करने के लिए फेसबुक (या अन्य प्रदाता) पर भरोसा करते हैं, तो आप इसे सुरक्षित मान सकते हैं। काउंटरफैक्चुअल पर विचार करें: यदि आपको प्रत्येक लॉगिन में अतिरिक्त क्रेडेंशियल की आवश्यकता है, तो प्रमाणीकरण के लिए ओएथ का उपयोग करने का क्या मतलब है? यह उपयोगकर्ता को परेशान करेगा। –

+0

ठीक है, एक लाख धन्यवाद! – kramer65

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