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

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

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

Android, iOS, और वेब SDK टूल

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

Kotlin+KTX
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 टूल, इन टोकन को अस्वीकार कर देंगे. उदाहरण के लिए, ऊपर बताए गए सेटअप चरणों के बिना डिफ़ॉल्ट व्यवहार.

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

Authentication एमुलेटर का इस्तेमाल, Emulator Suite UI के ज़रिए इंटरैक्टिव तरीके से किया जा सकता है. इसके अलावा, इसके लोकल 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, वेब) के लिए SDK टूल के लॉजिक की मदद से, उपयोगकर्ता को साइन इन और साइन आउट कर सकता है.

ईमेल लिंक फ़्लो की मदद से, ईमेल की पुष्टि करने/साइन इन करने की जांच करने के लिए, एमुलेटर उस टर्मिनल पर एक यूआरएल प्रिंट करता है जिस पर 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 टूल से चलाए जाने वाले आईडीपी फ़्लो की जांच करना

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

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

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

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

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

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

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

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

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

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

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

Cloud IAM

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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