Firebase प्रोजेक्ट में उपयोगकर्ता

Firebase उपयोगकर्ता ऑब्जेक्ट उस उपयोगकर्ता खाते का प्रतिनिधित्व करता है जिसने आपके प्रोजेक्ट में किसी ऐप के लिए साइन अप किया है। ऐप्स में आमतौर पर कई पंजीकृत उपयोगकर्ता होते हैं, और प्रोजेक्ट में प्रत्येक ऐप एक उपयोगकर्ता डेटाबेस साझा करता है।

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

उपयोगकर्ता गुण

फायरबेस उपयोगकर्ताओं के पास मूल गुणों का एक निश्चित सेट होता है- एक अद्वितीय आईडी, एक प्राथमिक ईमेल पता, एक नाम और एक फोटो यूआरएल-प्रोजेक्ट के उपयोगकर्ता डेटाबेस में संग्रहीत होता है, जिसे उपयोगकर्ता ( आईओएस , एंड्रॉइड , वेब ) द्वारा अपडेट किया जा सकता है। आप उपयोगकर्ता ऑब्जेक्ट में सीधे अन्य गुण नहीं जोड़ सकते; इसके बजाय, आप Google Cloud Firestore जैसी किसी अन्य संग्रहण सेवाओं में अतिरिक्त गुण संग्रहीत कर सकते हैं।

पहली बार जब कोई उपयोगकर्ता आपके ऐप में साइन अप करता है, तो उपलब्ध जानकारी का उपयोग करके उपयोगकर्ता का प्रोफ़ाइल डेटा पॉप्युलेट किया जाता है:

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

एक बार उपयोगकर्ता खाता बन जाने के बाद, आप उपयोगकर्ता द्वारा किसी अन्य डिवाइस पर किए गए किसी भी परिवर्तन को शामिल करने के लिए उपयोगकर्ता की जानकारी को पुनः लोड कर सकते हैं।

साइन-इन प्रदाता

आप कई विधियों का उपयोग करके अपने ऐप्स में उपयोगकर्ताओं को साइन इन कर सकते हैं: ईमेल पता और पासवर्ड, फ़ेडरेटेड पहचान प्रदाता, और आपका कस्टम प्रमाणीकरण सिस्टम। आप किसी उपयोगकर्ता के साथ एक से अधिक साइन-इन विधि संबद्ध कर सकते हैं: उदाहरण के लिए, कोई उपयोगकर्ता ईमेल पते और पासवर्ड का उपयोग करके या Google साइन-इन का उपयोग करके उसी खाते में साइन इन कर सकता है।

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

वर्तमान उपयोगकर्ता

जब कोई उपयोगकर्ता साइन अप या साइन इन करता है, तो वह उपयोगकर्ता प्रामाणिक उदाहरण का वर्तमान उपयोगकर्ता बन जाता है। इंस्टेंस उपयोगकर्ता की स्थिति को बनाए रखता है, ताकि पृष्ठ को रीफ्रेश करने (ब्राउज़र में) या एप्लिकेशन को पुनरारंभ करने से उपयोगकर्ता की जानकारी न खो जाए।

जब उपयोगकर्ता साइन आउट करता है, तो ऑथेंट इंस्टेंस उपयोगकर्ता ऑब्जेक्ट का संदर्भ रखना बंद कर देता है और अब उसकी स्थिति नहीं बनी रहती है; कोई वर्तमान उपयोगकर्ता नहीं है। हालांकि, उपयोगकर्ता इंस्टेंस पूरी तरह कार्यात्मक बना हुआ है: यदि आप इसका संदर्भ रखते हैं, तो भी आप उपयोगकर्ता के डेटा तक पहुंच और अपडेट कर सकते हैं।

उपयोगकर्ता जीवनचक्र

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

एक प्रामाणिक श्रोता को निम्नलिखित स्थितियों में सूचित किया जाता है:

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

उपयोगकर्ता स्वयं सेवा

डिफ़ॉल्ट रूप से, फायरबेस उपयोगकर्ताओं को बिना प्रशासनिक हस्तक्षेप के साइन-अप करने और उनके खातों को हटाने में सक्षम बनाता है। कई परिस्थितियों में, यह अंतिम-उपयोगकर्ताओं को आपके एप्लिकेशन या सेवा और ऑनबोर्ड (या ऑफबोर्ड) को न्यूनतम घर्षण के साथ खोजने में सक्षम बनाता है।

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

यदि कोई अंतिम-उपयोगकर्ता आपके सिस्टम के भीतर खाता बनाने या हटाने का प्रयास करता है, तो फायरबेस सेवा एक त्रुटि कोड लौटाएगी: वेब एपीआई कॉल के लिए auth/admin-restricted-operation , या Android और iOS के लिए ERROR_ADMIN_RESTRICTED_OPERATION । उपयोगकर्ता को आपकी सेवा के लिए उचित कार्रवाई करने के लिए कहकर आपको अपने फ्रंट-एंड पर त्रुटि को इनायत से संभालना चाहिए।

प्रामाणिक टोकन

जब आप फायरबेस के साथ प्रमाणीकरण करते हैं, तो आपके सामने तीन प्रकार के प्रमाणीकरण टोकन हो सकते हैं:

फायरबेस आईडी टोकन जब कोई उपयोगकर्ता किसी ऐप में साइन इन करता है तो Firebase द्वारा बनाया जाता है। ये टोकन हस्ताक्षरित जेडब्ल्यूटी हैं जो किसी फायरबेस प्रोजेक्ट में उपयोगकर्ता की सुरक्षित रूप से पहचान करते हैं। इन टोकन में उपयोगकर्ता के लिए बुनियादी प्रोफ़ाइल जानकारी होती है, जिसमें उपयोगकर्ता की आईडी स्ट्रिंग भी शामिल होती है, जो कि फायरबेस प्रोजेक्ट के लिए अद्वितीय है। चूंकि आईडी टोकन की अखंडता को सत्यापित किया जा सकता है , इसलिए आप वर्तमान में साइन-इन किए गए उपयोगकर्ता की पहचान करने के लिए उन्हें बैकएंड सर्वर पर भेज सकते हैं।
पहचान प्रदाता टोकन Google और Facebook जैसे फ़ेडरेटेड पहचान प्रदाताओं द्वारा बनाया गया। इन टोकन के अलग-अलग प्रारूप हो सकते हैं, लेकिन अक्सर OAuth 2.0 एक्सेस टोकन होते हैं। ऐप्स इन टोकन का उपयोग यह सत्यापित करने के लिए करते हैं कि उपयोगकर्ताओं ने पहचान प्रदाता के साथ सफलतापूर्वक प्रमाणित किया है, और फिर उन्हें Firebase सेवाओं द्वारा उपयोग करने योग्य क्रेडेंशियल्स में परिवर्तित करें।
फायरबेस कस्टम टोकन उपयोगकर्ताओं को आपके प्रमाणीकरण सिस्टम का उपयोग करके किसी ऐप में साइन इन करने की अनुमति देने के लिए आपके कस्टम प्रमाणीकरण सिस्टम द्वारा बनाया गया है। कस्टम टोकन एक सेवा खाते की निजी कुंजी का उपयोग करके हस्ताक्षरित JWTs हैं। ऐप्स इन टोकन का उपयोग उसी तरह करते हैं जैसे वे फ़ेडरेटेड पहचान प्रदाताओं से लौटाए गए टोकन का उपयोग करते हैं।

सत्यापित ईमेल पते

फायरबेस एक ईमेल को सत्यापित मानता है यदि वह दो शर्तों को पूरा करता है: 1. उपयोगकर्ता फायरबेस सत्यापन प्रवाह को पूरा करता है 2. ईमेल को एक विश्वसनीय पहचान प्रदाता, या संक्षेप में आईडीपी द्वारा सत्यापित किया जाता है।

आईडीपी जो एक बार ईमेल को सत्यापित करते हैं, लेकिन फिर उपयोगकर्ताओं को पुन: सत्यापन की आवश्यकता के बिना ईमेल पते बदलने की अनुमति देते हैं, उन पर भरोसा नहीं किया जाता है। IdPs जिनके पास या तो डोमेन है या जिन्हें हमेशा सत्यापन की आवश्यकता होती है, उन्हें विश्वसनीय माना जाता है।

विश्वसनीय प्रदाता:

  • गूगल (@gmail.com पतों के लिए)
  • Yahoo (@yahoo.com पतों के लिए)
  • Microsoft (@outlook.com और @hotmail.com पतों के लिए)
  • Apple (हमेशा सत्यापित, क्योंकि खाते हमेशा सत्यापित और बहु-कारक-प्रमाणित होते हैं)

अविश्वसनीय प्रदाता:

  • फेसबुक
  • ट्विटर
  • GitHub
  • डोमेन के लिए Google, Yahoo और Microsoft उस पहचान प्रदाता द्वारा जारी नहीं किए गए हैं
  • ईमेल सत्यापन के बिना ईमेल / पासवर्ड

कुछ स्थितियों में, जब उपयोगकर्ता एक ही ईमेल पते का उपयोग करके विभिन्न प्रदाताओं के साथ साइन इन करता है, तो Firebase स्वचालित रूप से खातों को लिंक कर देगा। यह तभी हो सकता है जब विशिष्ट मानदंड पूरे हों। यह समझने के लिए, निम्नलिखित स्थिति पर विचार करें: एक उपयोगकर्ता @gmail.com खाते के साथ Google का उपयोग करके साइन इन करता है और एक दुर्भावनापूर्ण अभिनेता उसी @gmail.com पते का उपयोग करके एक खाता बनाता है, लेकिन फेसबुक के माध्यम से साइन इन करता है। यदि इन दोनों खातों को स्वचालित रूप से लिंक किया गया था, तो दुर्भावनापूर्ण अभिनेता उपयोगकर्ता के खाते तक पहुंच प्राप्त कर लेगा।

निम्नलिखित मामलों का वर्णन है कि जब हम स्वचालित रूप से खातों को लिंक करते हैं और जब हम उपयोगकर्ता या डेवलपर कार्रवाई की आवश्यकता वाली त्रुटि फेंकते हैं:

  • उपयोगकर्ता एक अविश्वसनीय प्रदाता के साथ साइन इन करता है, फिर उसी ईमेल के साथ किसी अन्य अविश्वसनीय प्रदाता के साथ साइन इन करता है (उदाहरण के लिए, फेसबुक के बाद गिटहब)। यह एक त्रुटि देता है जिसके लिए खाता लिंक करने की आवश्यकता होती है।
  • उपयोगकर्ता एक विश्वसनीय प्रदाता के साथ साइन इन करता है, फिर उसी ईमेल के साथ अविश्वसनीय प्रदाता के साथ साइन इन करता है (उदाहरण के लिए, Google के बाद फेसबुक)। यह एक त्रुटि देता है जिसके लिए खाता लिंक करने की आवश्यकता होती है।
  • उपयोगकर्ता एक अविश्वसनीय प्रदाता के साथ साइन इन करता है, फिर उसी ईमेल के साथ एक विश्वसनीय प्रदाता के साथ साइन इन करता है (उदाहरण के लिए, फेसबुक के बाद Google)। विश्वसनीय प्रदाता अविश्वसनीय प्रदाता को अधिलेखित कर देता है। यदि उपयोगकर्ता Facebook के साथ फिर से साइन इन करने का प्रयास करता है, तो यह एक त्रुटि उत्पन्न करेगा जिसके लिए खाता लिंक करने की आवश्यकता होती है।
  • उपयोगकर्ता किसी विश्वसनीय प्रदाता के साथ साइन इन करता है, फिर उसी ईमेल के साथ किसी भिन्न विश्वसनीय प्रदाता के साथ साइन इन करता है (उदाहरण के लिए, Apple के बाद Google)। दोनों प्रदाताओं को त्रुटियों के बिना जोड़ा जाएगा।

आप व्यवस्थापक SDK का उपयोग करके किसी ईमेल को सत्यापित के रूप में मैन्युअल रूप से सेट कर सकते हैं, लेकिन हम केवल ऐसा करने की अनुशंसा करते हैं यदि आप जानते हैं कि उपयोगकर्ता वास्तव में ईमेल का स्वामी है।