अपने ऐप्लिकेशन के साथ Authentication emulator का इस्तेमाल करने से पहले, पक्का करें कि आपको पूरे Firebase Local Emulator Suite वर्कफ़्लो के बारे में पता हो, और यह भी पक्का करें कि आपने इंस्टॉल और कॉन्फ़िगर कर लिया हो और इसके Local Emulator Suite सीएलआई कमांड की समीक्षा कर ली हो.
इस विषय में यह मान लिया गया है कि आपको प्रोडक्शन के लिए Firebase Authentication समाधान डेवलप करने के बारे में पहले से जानकारी है. अगर ज़रूरत हो, तो दस्तावेज़ की समीक्षा करें अपने प्लैटफ़ॉर्म और पुष्टि करने की तकनीक के कॉम्बिनेशनके लिए.
Authentication emulator की मदद से क्या किया जा सकता है?
Authentication emulator, Firebase Authentication सेवाओं का स्थानीय तौर पर सटीक इम्यूलेशन उपलब्ध कराता है. इससे, production Firebase Authentication में मौजूद ज़्यादातर सुविधाएं मिलती हैं. Apple प्लैटफ़ॉर्म, Android, और वेब Firebase SDK के साथ मिलकर काम करने वाला यह एम्युलेटर, आपको ये काम करने की सुविधा देता है:
- ईमेल/पासवर्ड, फ़ोन नंबर/एसएमएस, एसएमएस मल्टी-फ़ैक्टर, और तीसरे पक्ष (जैसे, Google) के आइडेंटिटी प्रोवाइडर से पुष्टि करने की सुविधा की जांच करने के लिए, इम्यूलेट किए गए उपयोगकर्ता खाते बनाना, अपडेट करना, और मैनेज करना
- इम्यूलेट किए गए उपयोगकर्ताओं को देखना और उनमें बदलाव करना
- कस्टम टोकन पुष्टि करने वाले सिस्टम का प्रोटोटाइप बनाना
- Emulator UI के लॉग टैब में, पुष्टि करने से जुड़े मैसेज देखना.
कोई Firebase प्रोजेक्ट चुनना
Firebase Local Emulator Suite किसी एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट इम्यूलेट करता है.
इम्यूलेटर शुरू करने से पहले, इस्तेमाल करने के लिए प्रोजेक्ट चुनने के लिए, अपनी वर्किंग डायरेक्ट्री में सीएलआई में firebase use चलाएं. इसके अलावा, हर एम्युलेटर
कमांड में --project फ़्लैग पास किया जा सकता है.
Local Emulator Suite असली Firebase प्रोजेक्ट और डेमो प्रोजेक्ट के इम्यूलेशन की सुविधा देता है.
| प्रोजेक्ट का टाइप | सुविधाएं | एम्युलेटर के साथ इस्तेमाल करना |
|---|---|---|
| असली |
असली Firebase प्रोजेक्ट वह होता है जिसे आपने बनाया और कॉन्फ़िगर किया है. आम तौर पर, इसे Firebase कंसोल की मदद से बनाया और कॉन्फ़िगर किया जाता है. असली प्रोजेक्ट में लाइव संसाधन होते हैं. जैसे, डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन या कोई अन्य संसाधन जिसे आपने उस Firebase प्रोजेक्ट के लिए सेट अप किया है. |
असली Firebase प्रोजेक्ट के साथ काम करते समय, आपके पास उन सभी प्रॉडक्ट के लिए एम्युलेटर चलाने का विकल्प होता है जिनके लिए यह सुविधा उपलब्ध है. जिन प्रॉडक्ट के लिए इम्यूलेटर नहीं चलाए जा रहे हैं उनके लिए, आपके ऐप्लिकेशन और कोड, लाइव संसाधन (डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन वगैरह) के साथ इंटरैक्ट करेंगे. |
| डेमो |
डेमो Firebase प्रोजेक्ट में, असली Firebase कॉन्फ़िगरेशन और कोई लाइव संसाधन नहीं होते. आम तौर पर, इन प्रोजेक्ट को कोडलैब या अन्य ट्यूटोरियल के ज़रिए ऐक्सेस किया जाता है. डेमो प्रोजेक्ट के प्रोजेक्ट आईडी में |
डेमो Firebase प्रोजेक्ट के साथ काम करते समय, आपके ऐप्लिकेशन और कोड एम्युलेटर सिर्फ़ के साथ इंटरैक्ट करते हैं. अगर आपका ऐप्लिकेशन किसी ऐसे संसाधन के साथ इंटरैक्ट करने की कोशिश करता है जिसके लिए एम्युलेटर नहीं चल रहा है, तो वह कोड काम नहीं करेगा. |
हमारा सुझाव है कि जहां भी मुमकिन हो वहां डेमो प्रोजेक्ट का इस्तेमाल करें. इसके ये फ़ायदे हैं:
- सेटअप करना आसान है, क्योंकि Firebase प्रोजेक्ट बनाए बिना भी एम्युलेटर चलाए जा सकते हैं
- सुरक्षा बेहतर होती है, क्योंकि अगर आपका कोड गलती से ऐसे संसाधनों को इनवोक करता है जिन्हें इम्यूलेट नहीं किया गया है (प्रोडक्शन), तो डेटा में बदलाव, इस्तेमाल, और बिलिंग की कोई संभावना नहीं होती
- ऑफ़लाइन सहायता बेहतर होती है, क्योंकि एसडीके कॉन्फ़िगरेशन डाउनलोड करने के लिए इंटरनेट ऐक्सेस करने की ज़रूरत नहीं होती.
अपने ऐप्लिकेशन को एम्युलेटर से कनेक्ट करना
Android, iOS, और वेब एसडीके
अपने ऐप्लिकेशन में मौजूद कॉन्फ़िगरेशन या टेस्ट क्लास को, Authentication emulator के साथ इंटरैक्ट करने के लिए, इस तरह सेट अप करें.
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 Functions या Firebase Security Rules के बीच इंटरैक्शन का प्रोटोटाइप बनाने और उसकी जांच करने के लिए, कोई अतिरिक्त सेटअप करने की ज़रूरत नहीं है या Realtime Database.AuthenticationCloud Firestore जब Authentication एम्युलेटर कॉन्फ़िगर किया जाता है और अन्य एम्युलेटर चल रहे होते हैं, तो वे अपने-आप एक साथ काम करते हैं.
Admin SDKs
Firebase Admin SDKs,
FIREBASE_AUTH_EMULATOR_HOST एनवायरमेंट वैरिएबल सेट होने पर, Authentication emulator से अपने-आप कनेक्ट हो जाते हैं.
export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"
ध्यान दें कि Cloud Functions emulator को Authentication emulator के बारे में अपने-आप पता होता है. इसलिए, Cloud Functions और Authentication emulator के बीच इंटिग्रेशन की जांच करते समय, इस चरण को छोड़ा जा सकता है. एनवायरमेंट वैरिएबल, Cloud Functions में Admin SDK के लिए अपने-आप सेट हो जाएगा.
एनवायरमेंट वैरिएबल सेट होने के बाद, Firebase Admin SDKs, स्थानीय डेवलपमेंट
और टेस्टिंग को आसान बनाने के लिए, Authentication emulator से जारी किए गए बिना साइन किए गए आईडी
Tokens और सेशन कुकी स्वीकार करेंगे. इसके लिए, क्रमशः verifyIdToken
and 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 एम्युलेटर का इंटरैक्टिव तरीके से इस्तेमाल कर सकते हैं. साथ ही, इसके स्थानीय REST इंटरफ़ेस के ज़रिए, नॉन-इंटरैक्टिव तरीके से भी इसका इस्तेमाल किया जा सकता है.Emulator Suite UI यहां दिए गए सेक्शन में, इंटरैक्टिव और नॉन-इंटरैक्टिव इस्तेमाल के उदाहरणों के बारे में बताया गया है.
Authentication emulator, इसके REST इंटरफ़ेस, और Emulator Suite UI को शुरू करने के लिए, यह कमांड चलाएं:
firebase emulators:start
ईमेल, ईमेल लिंक, और गुमनाम पुष्टि करने की सुविधा को इम्यूलेट करना
गुमनाम पुष्टि करने की सुविधा के लिए, आपका ऐप्लिकेशन, आपके प्लैटफ़ॉर्म (iOS, Android, वेब) के लिए साइन-इन लॉजिक का इस्तेमाल कर सकता है.
ईमेल/पासवर्ड से पुष्टि करने की सुविधा के लिए, SDK के तरीकों का इस्तेमाल करके, अपने ऐप्लिकेशन से Authentication emulator में उपयोगकर्ता खाते जोड़कर या Emulator Suite UI का इस्तेमाल करके, प्रोटोटाइप बनाना शुरू किया जा सकता है.Authentication
- Emulator Suite UI में, पुष्टि करने की सुविधा टैब पर क्लिक करें.
- उपयोगकर्ता जोड़ें बटन पर क्लिक करें.
- उपयोगकर्ता खाता बनाने के विज़र्ड में दिए गए निर्देशों का पालन करें. साथ ही, ईमेल से पुष्टि करने के फ़ील्ड भरें.
टेस्ट के लिए उपयोगकर्ता खाता बनाने के बाद, आपका ऐप्लिकेशन, आपके प्लैटफ़ॉर्म (iOS, Android, web) के लिए एसडीके लॉजिक की मदद से, उपयोगकर्ता को साइन इन और साइन आउट कर सकता है.
ईमेल से पुष्टि करने/ईमेल लिंक फ़्लो से साइन-इन करने की सुविधा की जांच करने के लिए, एम्युलेटर, टर्मिनल पर एक यूआरएल प्रिंट करता है. इस यूआरएल पर 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 को कॉल करके उपयोगकर्ता खाते बनाती हैं और मिटाती हैं. साथ ही, एम्युलेटर के ईमेल से पुष्टि करने वाले यूआरएल में डेटा भरने के लिए, बैंड से बाहर के ईमेल से पुष्टि करने वाले कोड फ़ेच करती हैं. इससे प्लैटफ़ॉर्म और टेस्ट कोड अलग-अलग रहते हैं. साथ ही, नॉन-इंटरैक्टिव तरीके से टेस्ट किया जा सकता है.
ईमेल और पासवर्ड के नॉन-इंटरैक्टिव टेस्ट फ़्लो के लिए, आम तौर पर यह क्रम होता है.
- पुष्टि करने की सुविधा के Authentication signUp REST एंडपॉइंट का इस्तेमाल करके, उपयोगकर्ता बनाएं.
- टेस्ट करने के लिए, ईमेल और पासवर्ड का इस्तेमाल करके उपयोगकर्ताओं को साइन इन कराएं.
- अगर आपके टेस्ट पर लागू होता है, तो एम्युलेटर के खास REST एंडपॉइंट से, बैंड से बाहर के ईमेल से पुष्टि करने के उपलब्ध कोड फ़ेच करें.
- डेटा मिटाने के लिए, एम्युलेटर के खास REST एंडपॉइंट से उपयोगकर्ता रिकॉर्ड फ़्लश करें.
फ़ोन/एसएमएस से पुष्टि करने की सुविधा को इम्यूलेट करना
फ़ोन से पुष्टि करने की सुविधा के लिए, Auth emulator इन सुविधाओं के साथ काम नहीं करता:
- reCAPTCHA और APN फ़्लो. क्लाइंट एसडीके, एम्युलेटर के साथ इंटरैक्ट करने के लिए कॉन्फ़िगर किए जाने के बाद, पुष्टि करने के इन तरीकों को बंद कर देते हैं. यह तरीका, इंटिग्रेशन टेस्टिंग (iOS, Android, वेब) के लिए बताए गए तरीके जैसा ही होता है.
- Firebase कंसोल में पहले से कॉन्फ़िगर किए गए कोड वाले टेस्ट फ़ोन नंबर.
इसके अलावा, क्लाइंट कोड के मामले में, फ़ोन/एसएमएस से पुष्टि करने का फ़्लो प्रोडक्शन (iOS, Android, वेब) के लिए बताए गए फ़्लो जैसा ही होता है.
Emulator Suite UI का इस्तेमाल करना:
- Emulator Suite UI में, पुष्टि करने की सुविधा टैब पर क्लिक करें.
- उपयोगकर्ता जोड़ें बटन पर क्लिक करें.
- उपयोगकर्ता खाता बनाने के विज़र्ड में दिए गए निर्देशों का पालन करें. साथ ही, फ़ोन से पुष्टि करने के फ़ील्ड भरें.
हालांकि, फ़ोन से पुष्टि करने के फ़्लो के लिए, एम्युलेटर कोई भी मैसेज नहीं भेजेगा. ऐसा इसलिए है, क्योंकि सेवा देने वाली कंपनी से संपर्क करना, स्थानीय टेस्टिंग के लिए सही नहीं है और यह इस दायरे से बाहर है! इसके बजाय, एम्युलेटर वह कोड प्रिंट करता है जो firebase emulators:start कमांड चलाने वाले टर्मिनल पर एसएमएस के ज़रिए भेजा जाता. इस कोड को ऐप्लिकेशन में डालकर, यह सिम्युलेट किया जा सकता है कि उपयोगकर्ता अपने मैसेज देख रहे हैं.
नॉन-इंटरैक्टिव टेस्टिंग
फ़ोन से पुष्टि करने की सुविधा की नॉन-इंटरैक्टिव टेस्टिंग के लिए, उपलब्ध एसएमएस कोड पाने के लिए, Authentication emulator REST API का इस्तेमाल करें. ध्यान दें कि हर बार फ़्लो शुरू करने पर, कोड अलग होता है.
आम तौर पर, यह क्रम होता है.
- पुष्टि करने की प्रोसेस शुरू करने के लिए, प्लैटफ़ॉर्म
signInWithPhoneNumberको कॉल करें. - एम्युलेटर के खास REST एंडपॉइंट का इस्तेमाल करके, पुष्टि करने का कोड पाएं.
- पुष्टि करने के लिए कोड के साथ, सामान्य तरीके से
confirmationResult.confirm(code)को कॉल करें.
मल्टी-फ़ैक्टर एसएमएस
Authentication एम्युलेटर, iOS, Android, और web के लिए प्रोडक्शन में उपलब्ध एसएमएस मल्टी-फ़ैक्टर ऑथेंटिकेशन (एमएफ़ए) फ़्लो का प्रोटोटाइप बनाने और उसकी जांच करने की सुविधा देता है.
एम्युलेटर में नकली उपयोगकर्ता जोड़ने पर, एमएफ़ए चालू किया जा सकता है. साथ ही, एक या उससे ज़्यादा फ़ोन नंबर कॉन्फ़िगर किए जा सकते हैं. इन नंबरों पर दूसरे फ़ैक्टर के एसएमएस भेजे जाएंगे. मैसेज उसी टर्मिनल पर दिखते हैं जिस पर firebase emulators:start कमांड चलाया गया था. साथ ही, ये REST इंटरफ़ेस से भी उपलब्ध होते हैं.
तीसरे पक्ष के आइडेंटिटी प्रोवाइडर (आईडीपी) से पुष्टि करने की सुविधा को इम्यूलेट करना
Authentication एम्युलेटर की मदद से, iOS, Android या वेब ऐप्लिकेशन में, तीसरे पक्ष से पुष्टि करने के कई फ़्लो की जांच की जा सकती है. इसके लिए, प्रोडक्शन कोड में कोई बदलाव करने की ज़रूरत नहीं होती. पुष्टि करने के फ़्लो के उदाहरणों के लिए, अपने ऐप्लिकेशन में इस्तेमाल किए जा सकने वाले प्लैटफ़ॉर्म और प्रोवाइडर के अलग-अलग कॉम्बिनेशन के लिए दस्तावेज़ देखें.
आम तौर पर, Firebase SDK का इस्तेमाल करके, दो तरीकों से पुष्टि की जा सकती है:
- आपका ऐप्लिकेशन, एसडीके को पूरी प्रोसेस को एंड-टू-एंड हैंडल करने की अनुमति देता है. इसमें क्रेडेंशियल पाने के लिए, तीसरे पक्ष के आईडीपी प्रोवाइडर के साथ सभी इंटरैक्शन शामिल हैं.
- आपका ऐप्लिकेशन, तीसरे पक्ष के एसडीके का इस्तेमाल करके, तीसरे पक्ष के प्रोवाइडर से मैन्युअल तरीके से क्रेडेंशियल पाता है. इसके बाद, इन क्रेडेंशियल को Authentication SDK को पास करता है.
फिर से, ऊपर दिए गए दस्तावेज़ के लिंक की जांच करें और पक्का करें कि आपको उस फ़्लो के बारे में जानकारी हो जिसका इस्तेमाल करना है. जैसे, Firebase SDK से मैनेज किया गया या मैन्युअल तरीके से क्रेडेंशियल पाना. Authentication emulator, दोनों तरीकों की जांच करने की सुविधा देता है.
Firebase SDK से मैनेज किए गए आईडीपी फ़्लो की जांच करना
अगर आपका ऐप्लिकेशन, Firebase SDK के किसी एंड-टू-एंड फ़्लो का इस्तेमाल करता है, जैसे कि OAuthProvider के लिए
Microsoft, GitHub या Yahoo से साइन-इन करने के लिए, तो इंटरैक्टिव टेस्टिंग के लिए, Authentication
emulator, साइन-इन पेज का स्थानीय वर्शन उपलब्ध कराता है. इससे,
पुष्टि करने की सुविधा की जांच करने में मदद मिलती है. यह सुविधा, उन वेब ऐप्लिकेशन के लिए है जो signinWithPopup या
signInWithRedirect तरीके को कॉल करते हैं. स्थानीय तौर पर उपलब्ध कराया गया यह साइन-इन पेज, मोबाइल ऐप्लिकेशन में भी दिखता है. इसे आपके प्लैटफ़ॉर्म की वेबव्यू लाइब्रेरी रेंडर करती है.
फ़्लो आगे बढ़ने पर, एम्युलेटर, तीसरे पक्ष के नकली उपयोगकर्ता खाते और क्रेडेंशियल बनाता है.
मैन्युअल तरीके से क्रेडेंशियल पाने वाले आईडीपी फ़्लो की जांच करना
अगर "मैन्युअल" तरीके से साइन-इन करने की तकनीकों का इस्तेमाल किया जाता है और आपके प्लैटफ़ॉर्म के signInWithCredentials तरीके को कॉल किया जाता है, तो आपका ऐप्लिकेशन, तीसरे पक्ष से साइन-इन करने का असली अनुरोध करेगा और तीसरे पक्ष के असली क्रेडेंशियल पाएगा.
ध्यान दें कि एम्युलेटर, Google से साइन-इन करने, Apple, और अन्य प्रोवाइडर से पाए गए क्रेडेंशियल के लिए, सिर्फ़ signInWithCredential पुष्टि करने की सुविधा के साथ काम करता है. ये प्रोवाइडर, JSON वेब टोकन (JWT) के तौर पर लागू किए गए आईडी टोकन का इस्तेमाल करते हैं. ऐक्सेस टोकन (जैसे, Facebook या Twitter से मिले टोकन, जो JWT नहीं हैं) के साथ काम नहीं किया जा सकता. अगले सेक्शन में, इन मामलों में किसी दूसरे विकल्प के बारे में बताया गया है.
नॉन-इंटरैक्टिव टेस्टिंग
नॉन-इंटरैक्टिव टेस्टिंग का एक तरीका यह है कि एम्युलेटर से उपलब्ध कराए गए साइन-इन पेज पर, उपयोगकर्ता के क्लिक को ऑटोमेट किया जाए. वेब ऐप्लिकेशन के लिए, WebDriver जैसे कंट्रोल इंटरफ़ेस का इस्तेमाल करें. मोबाइल के लिए, अपने प्लैटफ़ॉर्म के यूज़र इंटरफ़ेस (यूआई) टेस्ट टूलिंग का इस्तेमाल करें. जैसे, Espresso या Xcode.
इसके अलावा, अपने कोड को signInWithCredential (जैसे, कोड ब्रांच में) का इस्तेमाल करने के लिए अपडेट किया जा सकता है. साथ ही, असली क्रेडेंशियल के बजाय, खातों के लिए नकली आईडी टोकन के साथ टोकन पुष्टि करने वाले फ़्लो का इस्तेमाल किया जा सकता है.
- अपने कोड के उस हिस्से को फिर से कनेक्ट करें या उस पर टिप्पणी करें जो आईडीपी से आईडी टोकन पाता है. इससे, टेस्ट के दौरान असली उपयोगकर्ता नाम और पासवर्ड डालने की ज़रूरत नहीं होती. साथ ही, आईडीपी पर एपीआई कोटा और दर की सीमाओं से आपके टेस्ट को राहत मिलती है.
- दूसरा,
signInWithCredentialके लिए टोकन की जगह, लिटरल JSON स्ट्रिंग का इस्तेमाल करें. वेब एसडीके को उदाहरण के तौर पर इस्तेमाल करके, कोड को इस तरह बदला जा सकता है:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
'{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));
एम्युलेटर के साथ इस्तेमाल करने पर, यह कोड, foo@example.com ईमेल वाले उपयोगकर्ता की Google पर पुष्टि करेगा. सब फ़ील्ड को प्राइमरी कुंजी के तौर पर समझें. इसे किसी भी स्ट्रिंग में बदला जा सकता है. इससे अलग-अलग उपयोगकर्ताओं के साइन-इन को मॉक किया जा सकता है. आप firebase.auth.GoogleAuthProvider को, उदाहरण के लिए, new firebase.auth.OAuthProvider('yahoo.com') या किसी अन्य प्रोवाइडर आईडी से बदल सकते हैं जिसे मॉक करना है.
कस्टम टोकन से पुष्टि करने की सुविधा को इम्यूलेट करना
Authentication emulator, प्रोडक्शन से कैसे अलग है
Firebase Authentication emulator, प्रोडक्शन में मौजूद प्रॉडक्ट की कई सुविधाओं को सिम्युलेट करता है. हालांकि, पुष्टि करने का कोई भी सिस्टम, कई लेवल (डिवाइस, तीसरे पक्ष के प्रोवाइडर, Firebase वगैरह) पर सुरक्षा पर निर्भर करता है. इसलिए, एम्युलेटर के लिए सभी फ़्लो को सही तरीके से फिर से बनाना मुश्किल है.
Cloud IAM
Firebase Emulator Suite, चलाने के लिए, IAM से जुड़े किसी भी व्यवहार को दोहराने या उसका पालन करने की कोशिश नहीं करता. एम्युलेटर, Firebase Security Rules का पालन करते हैं. हालांकि, उन स्थितियों में जहां आम तौर पर IAM का इस्तेमाल किया जाता है, जैसे कि Cloud Functions को इनवोक करने वाले सेवा खाते और इस तरह अनुमतियां सेट करने के लिए, एम्युलेटर को कॉन्फ़िगर नहीं किया जा सकता. साथ ही, यह आपके डेवलपर मशीन पर वैश्विक तौर पर उपलब्ध खाते का इस्तेमाल करेगा. यह सीधे तौर पर स्थानीय स्क्रिप्ट चलाने जैसा है.
मोबाइल पर ईमेल लिंक के ज़रिए साइन-इन करना
मोबाइल प्लैटफ़ॉर्म पर, ईमेल लिंक से साइन-इन करने की सुविधा, Firebase डाइनैमिक लिंक पर निर्भर करती है. इसलिए, ऐसे सभी लिंक, (मोबाइल) वेब प्लैटफ़ॉर्म पर खुलेंगे.
तीसरे पक्ष की मदद से साइन-इन
तीसरे पक्ष से साइन-इन करने के फ़्लो के लिए, Firebase Authentication Twitter और Github जैसे तीसरे पक्ष के प्रोवाइडर से मिले सुरक्षित क्रेडेंशियल पर निर्भर करता है.
OpenID Connect प्रोवाइडर, जैसे कि Google और Apple से मिले असली क्रेडेंशियल, Authentication emulator स्वीकार करता है. नॉन-OpenID Connect प्रोवाइडर से मिले क्रेडेंशियल के साथ काम नहीं किया जा सकता.
ईमेल / एसएमएस से साइन-इन करना
प्रोडक्शन ऐप्लिकेशन में, ईमेल और एसएमएस से साइन-इन करने के फ़्लो में, एसिंक्रोनस ऑपरेशन शामिल होता है. इसमें उपयोगकर्ता को मिला मैसेज देखता है और साइन-इन इंटरफ़ेस में लॉगिन कोड डालता है. Authentication एम्युलेटर कोई ईमेल या एसएमएस मैसेज नहीं भेजता. हालांकि, जैसा कि ऊपर बताया गया है, यह लॉगिन कोड जनरेट करता है और उन्हें टर्मिनल पर आउटपुट करता है, ताकि टेस्टिंग में उनका इस्तेमाल किया जा सके.
एम्युलेटर, टेस्ट फ़ोन नंबर को तय लॉगिन कोड के साथ तय करने की सुविधा के साथ काम नहीं करता. ऐसा Firebase कंसोल का इस्तेमाल करके किया जा सकता है.
कस्टम टोकन से पुष्टि करने की सुविधा
Authentication emulator, कस्टम टोकन के हस्ताक्षर या समयसीमा खत्म होने की पुष्टि नहीं करता. इससे, प्रोटोटाइप बनाने और टेस्टिंग के दौरान, हाथ से बनाए गए टोकन का इस्तेमाल किया जा सकता है. साथ ही, टोकन को अनिश्चित समय के लिए फिर से इस्तेमाल किया जा सकता है.
अनुरोध संख्या सीमित करना / गलत इस्तेमाल से बचाना
Authentication एम्युलेटर, प्रोडक्शन में अनुरोध संख्या सीमित करना या गलत इस्तेमाल से बचाने की सुविधाओं को नहीं दोहराता.
फ़ंक्शन ब्लॉक करना
प्रोडक्शन में, beforeCreate और beforeSignIn दोनों इवेंट ट्रिगर होने के बाद, उपयोगकर्ताओं को स्टोरेज में एक बार लिखा जाता है. हालांकि, तकनीकी सीमाओं की वजह से,
Authentication emulator, स्टोरेज में दो बार लिखता है. एक बार उपयोगकर्ता बनाने के बाद और
दूसरी बार साइन-इन करने के बाद. इसका मतलब है कि नए उपयोगकर्ताओं के लिए, getAuth().getUser() को beforeSignIn में Authentication emulator में कॉल किया जा सकता है. हालांकि, प्रोडक्शन में ऐसा करने पर
गड़बड़ी आएगी.
आगे क्या करना है?
वीडियो के चुने गए सेट और सिलसिलेवार तरीके से निर्देश देने वाले उदाहरणों के लिए, Firebase Emulators ट्रेनिंग प्लेलिस्ट देखें.
ट्रिगर किए गए फ़ंक्शन, आम तौर पर Authentication के साथ इंटिग्रेट किए जाते हैं. इसलिए, स्थानीय तौर पर फ़ंक्शन चलाने के बारे में ज़्यादा जानने के लिए, Firebase के लिए Cloud Functions emulator के बारे में ज़्यादा जानें.