अपने ऐप्लिकेशन को ऑथेंटिकेशन एम्युलेटर से कनेक्ट करें

अपने ऐप्लिकेशन के साथ, Authentication एम्युलेटर का इस्तेमाल करने से पहले, पक्का करें कि आपको पूरे Firebase Local Emulator Suite वर्कफ़्लोके बारे में पता हो . साथ ही, आपने इंस्टॉल और कॉन्फ़िगर कर लिया हो Local Emulator Suite. इसके अलावा, आपने इसके सीएलआई कमांडकी समीक्षा कर ली हो.

इस विषय में यह मान लिया गया है कि आपको प्रोडक्शन के लिए, Firebase Authentication समाधान डेवलप करने के बारे में पहले से पता है. ज़रूरत पड़ने पर, प्लैटफ़ॉर्म और पुष्टि करने की तकनीक के कॉम्बिनेशन के लिए, दस्तावेज़ की समीक्षा करें.

Authentication एम्युलेटर की मदद से क्या किया जा सकता है?

Authentication एम्युलेटर, Firebase Authentication सेवाओं का स्थानीय तौर पर सटीक तरीके से इम्यूलेशन करता है. इससे, प्रोडक्शन Firebase Authentication में ज़्यादातर सुविधाएं मिलती हैं. Apple प्लैटफ़ॉर्म, Android, और वेब Firebase SDK के साथ मिलकर काम करने वाला यह एम्युलेटर, आपको ये काम करने की सुविधा देता है:

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

कोई Firebase प्रोजेक्ट चुनना

Firebase Local Emulator Suite एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट इम्यूलेट करता है.

इम्यूलेटर शुरू करने से पहले, इस्तेमाल करने के लिए प्रोजेक्ट चुनने के लिए, अपनी वर्किंग डायरेक्ट्री में सीएलआई में firebase use चलाएं. इसके अलावा, हर एम्युलेटर कमांड में --project फ़्लैग पास किया जा सकता है.

Local Emulator Suite असली Firebase प्रोजेक्ट और डेमो प्रोजेक्ट के इम्यूलेशन की सुविधा देता है.

प्रोजेक्ट का टाइप सुविधाएं एम्युलेटर के साथ इस्तेमाल करना
असली

असली Firebase प्रोजेक्ट वह होता है जिसे आपने बनाया और कॉन्फ़िगर किया है. आम तौर पर, इसे Firebase कंसोल के ज़रिए बनाया और कॉन्फ़िगर किया जाता है.

असली प्रोजेक्ट में लाइव संसाधन होते हैं. जैसे, डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन या कोई अन्य संसाधन जिसे आपने उस Firebase प्रोजेक्ट के लिए सेट अप किया है.

असली Firebase प्रोजेक्ट के साथ काम करते समय, सहायता वाले किसी भी या सभी प्रॉडक्ट के लिए एम्युलेटर चलाए जा सकते हैं.

जिन प्रॉडक्ट के लिए इम्यूलेटर नहीं चलाए जा रहे हैं उनके लिए, आपके ऐप्लिकेशन और कोड, लाइव संसाधन (डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन वगैरह) के साथ इंटरैक्ट करेंगे.

डेमो

डेमो Firebase प्रोजेक्ट में, असली Firebase कॉन्फ़िगरेशन और कोई लाइव संसाधन नहीं होते. आम तौर पर, इन प्रोजेक्ट को कोडलैब या अन्य ट्यूटोरियल के ज़रिए ऐक्सेस किया जाता है.

डेमो प्रोजेक्ट के प्रोजेक्ट आईडी में demo- प्रीफ़िक्स होता है.

डेमो Firebase प्रोजेक्ट के साथ काम करते समय, आपके ऐप्लिकेशन और कोड इम्यूलेटर के साथ सिर्फ़ इंटरैक्ट करते हैं. अगर आपका ऐप्लिकेशन किसी ऐसे संसाधन के साथ इंटरैक्ट करने की कोशिश करता है जिसके लिए कोई एम्युलेटर नहीं चल रहा है, तो वह कोड काम नहीं करेगा.

हमारा सुझाव है कि जहां भी मुमकिन हो वहां डेमो प्रोजेक्ट का इस्तेमाल करें. इसके ये फ़ायदे हैं:

  • सेटअप करना आसान है, क्योंकि Firebase प्रोजेक्ट बनाए बिना भी एम्युलेटर चलाए जा सकते हैं
  • सुरक्षा बेहतर है, क्योंकि अगर आपका कोड गलती से इम्यूलेट नहीं किए गए (प्रोडक्शन) संसाधनों को इनवोक करता है, तो डेटा में बदलाव, इस्तेमाल, और बिलिंग की कोई संभावना नहीं होती
  • ऑफ़लाइन सहायता बेहतर है, क्योंकि एसडीके कॉन्फ़िगरेशन डाउनलोड करने के लिए इंटरनेट ऐक्सेस करने की ज़रूरत नहीं होती.

अपने ऐप्लिकेशन को एम्युलेटर से कम्यूनिकेट करने के लिए इंस्ट्रूमेंट करना

Android, iOS, और वेब एसडीके

पुष्टि करने वाले एम्युलेटर के साथ इंटरैक्ट करने के लिए, अपने इन-ऐप्लिकेशन कॉन्फ़िगरेशन या टेस्ट क्लास को इस तरह सेट अप करें.Authentication

Kotlin
Firebase.auth.useEmulator("10.0.2.2", 9099)
Java
FirebaseAuth.getInstance().useEmulator("10.0.2.2", 9099);
Swift
Auth.auth().useEmulator(withHost:"127.0.0.1", port:9099)
Unity
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
// Connects to the Auth Emulator running on port 9099
auth.UseEmulator("127.0.0.1", 9099);

Web

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://127.0.0.1:9099");

Web

const auth = firebase.auth();
auth.useEmulator("http://127.0.0.1:9099");

Authentication और Cloud Functions या Firebase Security Rules के बीच इंटरैक्शन का प्रोटोटाइप बनाने और टेस्ट करने के लिए, किसी अतिरिक्त सेटअप की ज़रूरत नहीं होती या Realtime Database.Cloud Firestore जब Authentication एम्युलेटर को कॉन्फ़िगर करने और अन्य एम्युलेटर चलाने पर, वे अपने-आप एक साथ काम करते हैं.

Admin SDKs

Firebase Admin SDKs, FIREBASE_AUTH_EMULATOR_HOST एनवायरमेंट वैरिएबल सेट होने पर, Authentication एम्युलेटर से अपने-आप कनेक्ट हो जाते हैं.

export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"

ध्यान दें कि Cloud Functions एम्युलेटर को Authentication एम्युलेटर के बारे में अपने-आप पता होता है. इसलिए, Cloud Functions और Authentication एम्युलेटर के बीच इंटिग्रेशन की जांच करते समय, इस चरण को छोड़ा जा सकता है. एनवायरमेंट वैरिएबल, Cloud Functions में Admin SDK के लिए अपने-आप सेट हो जाएगा.

एनवायरमेंट वैरिएबल सेट होने पर, Firebase Admin SDKs, Authentication एम्युलेटर से जारी किए गए बिना साइन किए गए आईडी टोकन और सेशन कुकी स्वीकार करेंगे. इसके लिए, क्रमशः verifyIdToken और createSessionCookie तरीकों का इस्तेमाल किया जाता है. इससे, स्थानीय डेवलपमेंट और टेस्टिंग में मदद मिलती है. कृपया प्रोडक्शन में एनवायरमेंट वैरिएबल सेट करें.

अगर आपको Admin SDK कोड, किसी दूसरे एनवायरमेंट में चल रहे शेयर किए गए एम्युलेटर से कनेक्ट करना है, तो आपको वही प्रोजेक्ट आईडी तय करना होगा जिसे आपने Firebase सीएलआई का इस्तेमाल करके सेट किया है. initializeApp में सीधे तौर पर कोई प्रोजेक्ट आईडी पास किया जा सकता है या GCLOUD_PROJECT एनवायरमेंट वैरिएबल सेट किया जा सकता है.

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
एनवायरमेंट वैरिएबल
export GCLOUD_PROJECT="your-project-id"

आईडी टोकन

सुरक्षा की वजह से, Authentication एम्युलेटर बिना साइन किए आईडी टोकन जारी करता है. इन्हें सिर्फ़ अन्य Firebase एम्युलेटर या Firebase Admin SDK, कॉन्फ़िगर किए जाने पर स्वीकार करते हैं. इन टोकन को प्रोडक्शन में चल रही Firebase सेवाओं या प्रोडक्शन मोड में चल रहे Firebase Admin SDK (जैसे, ऊपर बताए गए सेटअप के चरणों के बिना डिफ़ॉल्ट व्यवहार) से अस्वीकार कर दिया जाएगा.

एम्युलेटर शुरू करना

आप Authentication एम्युलेटर का इस्तेमाल, Emulator Suite UI और इसके स्थानीय REST इंटरफ़ेस के ज़रिए नॉन-इंटरैक्टिव तरीके से कर सकते हैं. यहां दिए गए सेक्शन में, इंटरैक्टिव और नॉन-इंटरैक्टिव इस्तेमाल के उदाहरण दिए गए हैं.

Authentication एम्युलेटर, इसके REST इंटरफ़ेस, और Emulator Suite UI को शुरू करने के लिए, यह कमांड चलाएं:

firebase emulators:start

गुमनाम पुष्टि करने की सुविधा के लिए, आपका ऐप्लिकेशन, आपके प्लैटफ़ॉर्म (iOS, Android, वेब) के लिए साइन-इन लॉजिक का इस्तेमाल कर सकता है.

ईमेल/पासवर्ड से पुष्टि करने की सुविधा के लिए, Authentication एम्युलेटर में उपयोगकर्ता खाते जोड़कर या Emulator Suite UI का इस्तेमाल करके, प्रोट2/} एसडीके के तरीकों का इस्तेमाल करके, अपने ऐप्लिकेशन से ोटाइप बनाना शुरू किया जा सकता है.Authentication

  1. Emulator Suite UI में, पुष्टि करने की सुविधा टैब पर क्लिक करें.
  2. उपयोगकर्ता जोड़ें बटन पर क्लिक करें.
  3. उपयोगकर्ता खाता बनाने के विज़र्ड में दिए गए निर्देशों का पालन करें और ईमेल से पुष्टि करने के फ़ील्ड भरें.

टेस्ट उपयोगकर्ता बनाने के बाद, आपका ऐप्लिकेशन, आपके प्लैटफ़ॉर्म (iOS, Android, वेब) के लिए एसडीके लॉजिक का इस्तेमाल करके, उपयोगकर्ता को साइन इन और साइन आउट कर सकता है.

ईमेल पते की पुष्टि करने/ईमेल लिंक फ़्लो से साइन-इन करने की सुविधा की जांच करने के लिए, एम्युलेटर, टर्मिनल पर एक यूआरएल प्रिंट करता है. इस यूआरएल पर firebase emulators:start कमांड चलाया गया था.

i  To verify the email address customer@ex.com, follow this link:
http://127.0.0.1:9099/emulator/action?mode=verifyEmail&lang=en&oobCode=XYZ123&apiKey=fake-api-key

पुष्टि करने वाले इवेंट को सिम्युलेट करने के लिए, लिंक को अपने ब्राउज़र में चिपकाएं. इसके बाद, देखें कि पुष्टि की प्रोसेस पूरी हुई या नहीं.

{
  "authEmulator": {
    "success": "The email has been successfully verified.",
    "email": "customer@example.com"
  }
}

पासवर्ड रीसेट करने की सुविधा की जांच करने के लिए, एम्युलेटर, टर्मिनल पर एक ऐसा ही यूआरएल प्रिंट करता है. इसमें newPassword पैरामीटर शामिल होता है. इसे ज़रूरत के हिसाब से बदला जा सकता है.

http://127.0.0.1:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

नॉन-इंटरैक्टिव टेस्टिंग

ईमेल/पासवर्ड वाले उपयोगकर्ता खातों को मैनेज करने के लिए, Emulator Suite UI या क्लाइंट कोड का इस्तेमाल करने के बजाय, टेस्ट सेटअप स्क्रिप्ट लिखी जा सकती हैं. ये स्क्रिप्ट, REST एपीआई कॉल करके उपयोगकर्ता खाते बनाती हैं और मिटाती हैं. साथ ही, एम्युलेटर ईमेल पते की पुष्टि करने वाले यूआरएल में डेटा भरने के लिए, बैंड से बाहर के ईमेल पते की पुष्टि करने वाले कोड फ़ेच करती हैं. इससे, प्लैटफ़ॉर्म और टेस्ट कोड अलग-अलग रहते हैं. साथ ही, नॉन-इंटरैक्टिव तरीके से टेस्ट किया जा सकता है.

ईमेल और पासवर्ड के नॉन-इंटरैक्टिव टेस्ट फ़्लो के लिए, आम तौर पर यह क्रम होता है.

  1. पुष्टि करने की सुविधा के Authentication साइन अप REST एंडपॉइंट का इस्तेमाल करके, उपयोगकर्ता बनाएं.
  2. टेस्ट करने के लिए, ईमेल और पासवर्ड का इस्तेमाल करके उपयोगकर्ताओं को साइन इन कराएं.
  3. अगर आपके टेस्ट पर लागू होता है, तो एम्युलेटर के लिए खास REST एंडपॉइंट से, बैंड से बाहर के ईमेल से पुष्टि करने के उपलब्ध कोड फ़ेच करें.
  4. डेटा मिटाने के लिए, एम्युलेटर के लिए खास REST एंडपॉइंट का इस्तेमाल करके, उपयोगकर्ता रिकॉर्ड फ़्लश करें.

फ़ोन/एसएमएस से पुष्टि करने की सुविधा को इम्यूलेट करना

फ़ोन से पुष्टि करने की सुविधा के लिए, पुष्टि करने वाला एम्युलेटर इन सुविधाओं के साथ काम नहीं करता:

  • reCAPTCHA और APN फ़्लो. एम्युलेटर के साथ इंटरैक्ट करने के लिए कॉन्फ़िगर किए जाने के बाद, क्लाइंट एसडीके, पुष्टि करने के इन तरीकों को बंद कर देते हैं. यह तरीका, इंटिग्रेशन टेस्टिंग (iOS, Android, वेब) के लिए बताए गए तरीके जैसा ही होता है.
  • Firebase कंसोल में पहले से कॉन्फ़िगर किए गए कोड वाले टेस्ट फ़ोन नंबर.

इसके अलावा, क्लाइंट कोड के मामले में, फ़ोन/एसएमएस से पुष्टि करने का फ़्लो प्रोडक्शन (iOS, Android, वेब) के लिए बताए गए फ़्लो जैसा ही होता है.

Emulator Suite UI का इस्तेमाल करना:

  1. Emulator Suite UI में, पुष्टि करने की सुविधा टैब पर क्लिक करें.
  2. उपयोगकर्ता जोड़ें बटन पर क्लिक करें.
  3. उपयोगकर्ता खाता बनाने के विज़र्ड में दिए गए निर्देशों का पालन करें और फ़ोन से पुष्टि करने के फ़ील्ड भरें.

हालांकि, फ़ोन से पुष्टि करने के फ़्लो के लिए, एम्युलेटर कोई भी मैसेज नहीं भेजेगा. ऐसा इसलिए है, क्योंकि सेवा देने वाली कंपनी से संपर्क करना, स्थानीय टेस्टिंग के दायरे से बाहर है और यह स्थानीय टेस्टिंग के लिए सही नहीं है! इसके बजाय, एम्युलेटर वह कोड प्रिंट करता है जो उसी टर्मिनल पर एसएमएस के ज़रिए भेजा जाता है जिस पर आपने firebase emulators:start कमांड चलाया था. इस कोड को ऐप्लिकेशन में डालकर, यह सिम्युलेट किया जा सकता है कि उपयोगकर्ता अपने मैसेज देख रहे हैं.

नॉन-इंटरैक्टिव टेस्टिंग

फ़ोन से पुष्टि करने की सुविधा की नॉन-इंटरैक्टिव टेस्टिंग के लिए, उपलब्ध एसएमएस कोड पाने के लिए, Authentication एम्युलेटर REST API का इस्तेमाल करें. ध्यान दें कि हर बार फ़्लो शुरू करने पर कोड अलग होता है.

आम तौर पर, यह क्रम होता है.

  1. पुष्टि करने की प्रोसेस शुरू करने के लिए, प्लैटफ़ॉर्म signInWithPhoneNumber को कॉल करें.
  2. एम्युलेटर के लिए खास REST एंडपॉइंट का इस्तेमाल करके, पुष्टि करने के लिए कोड पाएं.
  3. पुष्टि करने के लिए कोड के साथ, हमेशा की तरह confirmationResult.confirm(code) को कॉल करें.

मल्टी-फ़ैक्टर एसएमएस

Authentication एम्युलेटर, iOS, Android, और web के लिए प्रोडक्शन में उपलब्ध, एसएमएस मल्टी-फ़ैक्टर ऑथेंटिकेशन (एमएफ़ए) फ़्लो का प्रोटोटाइप बनाने और टेस्ट करने की सुविधा देता है.

एम्युलेटर में नकली उपयोगकर्ता जोड़ने पर, एमएफ़ए चालू किया जा सकता है. साथ ही, एक या उससे ज़्यादा फ़ोन नंबर कॉन्फ़िगर किए जा सकते हैं. इन नंबरों पर दूसरे फ़ैक्टर के एसएमएस भेजे जाएंगे. मैसेज उसी टर्मिनल पर आउटपुट होते हैं जिस पर आपने firebase emulators:start कमांड चलाया था. साथ ही, ये REST इंटरफ़ेस से उपलब्ध होते हैं.

तीसरे पक्ष के आइडेंटिटी प्रोवाइडर (आईडीपी) से पुष्टि करने की सुविधा को इम्यूलेट करना

Authentication एम्युलेटर, iOS, Android या वेब ऐप्लिकेशन में, तीसरे पक्ष से पुष्टि करने के कई फ़्लो को टेस्ट करने की सुविधा देता है. इसके लिए, प्रोडक्शन कोड में कोई बदलाव करने की ज़रूरत नहीं होती. पुष्टि करने के फ़्लो के उदाहरणों के लिए, अपने ऐप्लिकेशन में इस्तेमाल किए जा सकने वाले प्लैटफ़ॉर्म और प्रोवाइडर के अलग-अलग कॉम्बिनेशन के लिए दस्तावेज़ देखें.

आम तौर पर, Firebase SDK का इस्तेमाल करके, दो तरीकों से पुष्टि की जा सकती है:

  • आपका ऐप्लिकेशन, एसडीके को पूरी प्रोसेस को एंड-टू-एंड हैंडल करने की अनुमति देता है. इसमें क्रेडेंशियल पाने के लिए, तीसरे पक्ष के आईडीपी प्रोवाइडर के साथ सभी इंटरैक्शन शामिल हैं.
  • आपका ऐप्लिकेशन, तीसरे पक्ष के प्रोवाइडर से उसके एसडीके का इस्तेमाल करके, मैन्युअल तरीके से क्रेडेंशियल फ़ेच करता है. इसके बाद, इन क्रेडेंशियल को Authentication एसडीके को पास करता है.

फिर से, ऊपर दिए गए दस्तावेज़ के लिंक की जांच करें और पक्का करें कि आपको उस फ़्लो के बारे में पता हो जिसका इस्तेमाल करना है. जैसे, Firebase SDK से मैनेज किया गया फ़्लो या मैन्युअल तरीके से क्रेडेंशियल फ़ेच करने का फ़्लो. Authentication एम्युलेटर, दोनों तरीकों की टेस्टिंग की सुविधा देता है.

Firebase SDK से मैनेज किए गए आईडीपी फ़्लो की टेस्टिंग

अगर आपका ऐप्लिकेशन, Firebase SDK के किसी एंड-टू-एंड फ़्लो का इस्तेमाल करता है, जैसे कि OAuthProvider के लिए Microsoft, GitHub या Yahoo से साइन-इन करने के लिए, इंटरैक्टिव टेस्टिंग के लिए, Authentication एम्युलेटर, साइन-इन पेज का स्थानीय वर्शन उपलब्ध कराता है. इससे, signinWithPopup या signInWithRedirect तरीके को कॉल करने वाले वेब ऐप्लिकेशन से पुष्टि करने की सुविधा को टेस्ट करने में मदद मिलती है. स्थानीय तौर पर उपलब्ध कराया गया यह साइन-इन पेज, मोबाइल ऐप्लिकेशन में भी दिखता है. इसे आपके प्लैटफ़ॉर्म की वेबव्यू लाइब्रेरी रेंडर करती है.

फ़्लो आगे बढ़ने पर, एम्युलेटर, तीसरे पक्ष के नकली उपयोगकर्ता खाते और क्रेडेंशियल बनाता है.

मैन्युअल तरीके से क्रेडेंशियल फ़ेच करके, आईडीपी फ़्लो की टेस्टिंग

अगर "मैन्युअल" साइन-इन तकनीकों का इस्तेमाल किया जाता है और आपके प्लैटफ़ॉर्म के signInWithCredentials तरीके को कॉल किया जाता है, तो हमेशा की तरह, आपका ऐप्लिकेशन, तीसरे पक्ष के असली साइन-इन का अनुरोध करेगा और तीसरे पक्ष के असली क्रेडेंशियल फ़ेच करेगा.

ध्यान दें कि एम्युलेटर, Google से साइन-इन, Apple, और अन्य प्रोवाइडर से फ़ेच किए गए क्रेडेंशियल के लिए, सिर्फ़ signInWithCredential पुष्टि करने की सुविधा के साथ काम करता है. ये प्रोवाइडर, आईडी टोकन का इस्तेमाल करते हैं. इन आईडी टोकन को JSON वेब टोकन (JWT) के तौर पर लागू किया जाता है. ऐक्सेस टोकन (जैसे, Facebook या Twitter से मिले टोकन, जो JWT नहीं हैं) के साथ काम नहीं किया जा सकता. अगले सेक्शन में, इन मामलों में किसी अन्य तरीके के बारे में बताया गया है.

नॉन-इंटरैक्टिव टेस्टिंग

नॉन-इंटरैक्टिव टेस्टिंग का एक तरीका यह है कि एम्युलेटर से उपलब्ध कराए गए साइन-इन पेज पर, उपयोगकर्ता के क्लिक को ऑटोमेट किया जाए. वेब ऐप्लिकेशन के लिए, WebDriver जैसे कंट्रोल इंटरफ़ेस का इस्तेमाल करें. मोबाइल के लिए, अपने प्लैटफ़ॉर्म के यूज़र इंटरफ़ेस टेस्ट टूलिंग का इस्तेमाल करें. जैसे, Espresso या Xcode.

इसके अलावा, signInWithCredential (जैसे, कोड ब्रांच में) का इस्तेमाल करने के लिए, अपने कोड को अपडेट किया जा सकता है. साथ ही, असली क्रेडेंशियल के बजाय, खातों के लिए नकली आईडी टोकन के साथ टोकन पुष्टि करने वाले फ़्लो का इस्तेमाल किया जा सकता है.

  1. अपने कोड के उस हिस्से को फिर से कनेक्ट करें या उस पर टिप्पणी करें जो आईडीपी से idToken फ़ेच करता है. इससे, टेस्ट के दौरान असली उपयोगकर्ता नाम और पासवर्ड डालने की ज़रूरत नहीं होती. साथ ही, आपके टेस्ट को आईडीपी पर एपीआई कोटा और दर की सीमाओं से राहत मिलती है.
  2. दूसरा, signInWithCredential के लिए टोकन की जगह, लिटरल JSON स्ट्रिंग का इस्तेमाल करें. वेब एसडीके को उदाहरण के तौर पर इस्तेमाल करके, कोड को इस तरह बदला जा सकता है:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

एम्युलेटर के साथ इस्तेमाल करने पर, यह कोड, Google पर foo@example.com ईमेल वाले उपयोगकर्ता की पुष्टि करेगा. सब फ़ील्ड को प्राइमरी कुंजी के तौर पर समझें. इसे किसी भी स्ट्रिंग में बदला जा सकता है. इससे अलग-अलग उपयोगकर्ताओं के साइन-इन को मॉक किया जा सकता है. आप firebase.auth.GoogleAuthProvider को, उदाहरण के लिए, new firebase.auth.OAuthProvider('yahoo.com') या मॉक करने के लिए किसी अन्य प्रोवाइडर आईडी से बदल सकते हैं.

कस्टम टोकन से पुष्टि करने की सुविधा को इम्यूलेट करना

Authentication एम्युलेटर, कस्टम JSON वेब टोकन की मदद से पुष्टि करने की सुविधा को हैंडल करता है. इसके लिए, सहायता वाले प्लैटफ़ॉर्म पर signInWithCustomToken तरीके को कॉल किया जाता है. इसके बारे में, प्रोडक्शन Authentication सुविधा के दस्तावेज़ में बताया गया है.

Authentication एम्युलेटर, प्रोडक्शन से कैसे अलग है

Firebase Authentication एम्युलेटर, प्रोडक्शन में मौजूद प्रॉडक्ट की कई सुविधाओं को सिम्युलेट करता है. हालांकि, पुष्टि करने का कोई भी सिस्टम, कई लेवल (डिवाइस, तीसरे पक्ष के प्रोवाइडर, Firebase वगैरह) पर सुरक्षा पर निर्भर करता है. इसलिए, एम्युलेटर के लिए सभी फ़्लो को सही तरीके से फिर से बनाना मुश्किल है.

Cloud IAM

Firebase Emulator Suite, चलाने के लिए, IAM से जुड़े किसी भी व्यवहार को दोहराने या उसका पालन करने की कोशिश नहीं करता. एम्युलेटर, Firebase Security Rules का पालन करते हैं. हालांकि, उन स्थितियों में जहां आम तौर पर IAM का इस्तेमाल किया जाता है, जैसे कि Cloud Functions को इनवोक करने वाले सेवा खाते और इस तरह अनुमतियां सेट करने के लिए, एम्युलेटर को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, यह आपके डेवलपर मशीन पर, दुनिया भर में उपलब्ध खाते का इस्तेमाल करेगा. यह ठीक उसी तरह है जैसे स्थानीय स्क्रिप्ट को सीधे तौर पर चलाना.

मोबाइल प्लैटफ़ॉर्म पर, ईमेल लिंक से साइन-इन करने के लिए, Firebase डाइनैमिक लिंक का इस्तेमाल किया जाता है. इसलिए, ऐसे सभी लिंक, (मोबाइल) वेब प्लैटफ़ॉर्म पर खुलेंगे.

तीसरे पक्ष की मदद से साइन-इन

तीसरे पक्ष से साइन-इन करने के फ़्लो के लिए, Firebase Authentication Twitter और Github जैसे तीसरे पक्ष के प्रोवाइडर से मिले सुरक्षित क्रेडेंशियल पर निर्भर करता है.

पुष्टि करने वाला एम्युलेटर, OpenID Connect के प्रोवाइडर (जैसे, Google और Apple) से मिले असली क्रेडेंशियल स्वीकार करता है. Authentication OpenID Connect के अलावा अन्य प्रोवाइडर से मिले क्रेडेंशियल के साथ काम नहीं किया जा सकता.

ईमेल / एसएमएस से साइन-इन करना

प्रोडक्शन ऐप्लिकेशन में, ईमेल और एसएमएस से साइन-इन करने के फ़्लो में एसिंक्रोनस ऑपरेशन शामिल होता है. इसमें उपयोगकर्ता को मिला मैसेज देखा जाता है और साइन-इन इंटरफ़ेस में लॉगिन कोड डाला जाता है. Authentication एम्युलेटर, कोई ईमेल या एसएमएस नहीं भेजता. हालांकि, जैसा कि ऊपर बताया गया है, यह लॉगिन कोड जनरेट करता है और उन्हें टर्मिनल पर आउटपुट करता है, ताकि टेस्टिंग में उनका इस्तेमाल किया जा सके.

एम्युलेटर, Firebase कंसोल का इस्तेमाल करके, टेस्ट फ़ोन नंबर को तय लॉगिन कोड के साथ तय करने की सुविधा के साथ काम नहीं करता.

कस्टम टोकन से पुष्टि करने की सुविधा

Authentication एम्युलेटर, कस्टम टोकन के हस्ताक्षर या समयसीमा खत्म होने की पुष्टि नहीं करता. इससे, प्रोटोटाइप बनाने और टेस्टिंग के दौरान, हाथ से बनाए गए टोकन का इस्तेमाल किया जा सकता है. साथ ही, टोकन को अनिश्चित समय के लिए फिर से इस्तेमाल किया जा सकता है.

अनुरोध संख्या सीमित करना / गलत इस्तेमाल से बचाना

Authentication एम्युलेटर, प्रोडक्शन में अनुरोध संख्या सीमित करने या गलत इस्तेमाल से बचाने की सुविधाओं को नहीं दोहराता.

फ़ंक्शन ब्लॉक करना

प्रोडक्शन में, beforeCreate और beforeSignIn दोनों इवेंट ट्रिगर होने के बाद, उपयोगकर्ताओं का डेटा स्टोरेज में एक बार लिखा जाता है. हालांकि, तकनीकी सीमाओं की वजह से, Authentication एम्युलेटर, स्टोरेज में दो बार डेटा लिखता है. एक बार उपयोगकर्ता बनाने के बाद और दूसरी बार साइन-इन करने के बाद. इसका मतलब है कि नए उपयोगकर्ताओं के लिए, getAuth().getUser() को beforeSignIn में Authentication एम्युलेटर में कॉल किया जा सकता है. हालांकि, प्रोडक्शन में ऐसा करने पर गड़बड़ी आएगी.

आगे क्या करना है?

  • वीडियो के चुने गए सेट और सिलसिलेवार तरीके से निर्देश देने वाले उदाहरणों के लिए, Firebase Emulators ट्रेनिंग प्लेलिस्ट देखें.

  • ट्रिगर किए गए फ़ंक्शन, आम तौर पर Authentication के साथ इंटिग्रेट किए जाते हैं. इसलिए, Firebase के लिए Cloud Functions एम्युलेटर के बारे में ज़्यादा जानने के लिए, स्थानीय तौर पर फ़ंक्शन चलाना लेख पढ़ें.