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

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

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

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

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

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

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

Firebase Local Emulator Suite, एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट की नकल करता है.

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

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

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

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

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

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

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

डेमो

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

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

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

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

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

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

Android, iOS, और वेब SDK

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)

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");

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

Admin SDK सेकंड

FIREBASE_AUTH_EMULATOR_HOST एनवायरमेंट वैरिएबल सेट होने पर, Firebase Admin SDK अपने-आप 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 CLI का इस्तेमाल करके सेट किया था. 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 से अस्वीकार कर दिया जाएगा. जैसे, ऊपर बताए गए सेटअप के चरणों के बिना डिफ़ॉल्ट व्यवहार.

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

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

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

firebase emulators:start

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

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

  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 API को कॉल करती हैं. साथ ही, ईमेल की पुष्टि करने वाले ऐसे कोड फ़ेच करती हैं जो बैंड से बाहर होते हैं. इनसे, एम्युलेटर में ईमेल की पुष्टि करने वाले यूआरएल को भरा जाता है. इससे प्लैटफ़ॉर्म और टेस्ट कोड अलग-अलग रहते हैं. साथ ही, आपको बिना किसी इंटरैक्शन के टेस्ट करने की सुविधा मिलती है.

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

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

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

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

  • reCAPTCHA और एपीएन फ़्लो. एम्युलेटर के साथ इंटरैक्ट करने के लिए कॉन्फ़िगर किए जाने के बाद, क्लाइंट SDK टूल, पुष्टि करने के इन तरीकों को बंद कर देते हैं. ऐसा इंटिग्रेशन टेस्टिंग (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, और वेब पर उपलब्ध हैं.

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

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

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

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

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

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

Firebase SDK टूल की मदद से आईडीपी फ़्लो की टेस्टिंग करना

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

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

मैन्युअल तरीके से क्रेडेंशियल पाने की सुविधा के साथ आईडीपी फ़्लो की जांच करना

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

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

बिना इंटरैक्शन वाली टेस्टिंग

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

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

  1. अपने कोड के उस हिस्से को फिर से लिखें या उस पर टिप्पणी करें जो आईडीपी से idTokens को वापस पाता है. इससे आपको टेस्ट के दौरान असली उपयोगकर्ता नाम और पासवर्ड डालने की ज़रूरत नहीं पड़ती. साथ ही, आईडीपी पर एपीआई कोटा और दर की सीमाओं से आपके टेस्ट को राहत मिलती है.
  2. दूसरा, signInWithCredential के टोकन की जगह लिटरल JSON स्ट्रिंग का इस्तेमाल करें. वेब SDK टूल का इस्तेमाल करके, कोड में इस तरह बदलाव किया जा सकता है:
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 के सुरक्षा नियमों का पालन करते हैं. हालांकि, कुछ मामलों में आईएएम का इस्तेमाल किया जाता है. उदाहरण के लिए, Cloud Functions को चालू करने वाले सेवा खाते और अनुमतियों को सेट करने के लिए. ऐसे मामलों में, एम्युलेटर को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, यह आपके डेवलपर मशीन पर उपलब्ध ग्लोबल खाते का इस्तेमाल करेगा. यह सीधे तौर पर लोकल स्क्रिप्ट चलाने जैसा है.

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

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

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

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

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

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

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

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

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

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

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

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

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

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