قبل استخدام محاكي Authentication مع تطبيقك، تأكَّد من أنّك تفهم سير عمل Firebase Local Emulator Suite بشكل عام، ومن أنّك تثبّت Local Emulator Suite وتضبط إعداداته وتراجع أوامر واجهة سطر الأوامر.
يفترض هذا الموضوع أنّك على دراية مسبقة بتطوير Firebase Authentication حلول للإنتاج. إذا لزم الأمر، راجِع المستندات الخاصة بمجموعة المنصّة وأسلوب المصادقة.
ما الذي يمكنني فعله باستخدام محاكي Authentication؟
يوفّر محاكي Authentication محاكاة محلية عالية الدقة لخدمات Firebase Authentication، ما يتيح الاستفادة من معظم الوظائف المتوفّرة في بيئة الإنتاج Firebase Authentication. عند إقران المحاكي بمنصات Apple وحِزم تطوير البرامج (SDK) على Android والويب في Firebase، يمكنك إجراء ما يلي:
- إنشاء حسابات مستخدمين محاكية وتعديلها وإدارتها لاختبار المصادقة باستخدام البريد الإلكتروني/كلمة المرور ورقم الهاتف/الرسائل القصيرة SMS والمصادقة المتعددة العوامل عبر الرسائل القصيرة SMS والمصادقة باستخدام موفّر هوية تابع لجهة خارجية (مثل Google)
- عرض المستخدمين المحاكَين وتعديلهم
- إنشاء نماذج أولية لأنظمة مصادقة الرموز المميزة المخصّصة
- راجِع الرسائل ذات الصلة بالمصادقة في علامة التبويب "سجلّات واجهة مستخدم المحاكي".
اختيار مشروع على Firebase
يحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.
لاختيار المشروع الذي تريد استخدامه، نفِّذ الأمر
firebase use
في دليل العمل قبل بدء المحاكيات. أو يمكنك تمرير العلامة --project
إلى كل أمر من أوامر المحاكي.
تتيح Local Emulator Suite محاكاة مشاريع Firebase الحقيقية ومشاريع العرض التوضيحي.
نوع المشروع | الميزات | الاستخدام مع المحاكيات |
---|---|---|
Real |
مشروع Firebase حقيقي هو مشروع أنشأته وأعددته (على الأرجح من خلال Firebase وحدة التحكّم). تحتوي المشاريع الحقيقية على موارد نشطة، مثل مثيلات قواعد البيانات أو حِزم التخزين أو الدوال أو أي موارد أخرى تم إعدادها لمشروع Firebase هذا. |
عند العمل مع مشاريع Firebase حقيقية، يمكنك تشغيل المحاكيات لأي من المنتجات المتوافقة أو جميعها. بالنسبة إلى أي منتجات لا تحاكيها، ستتفاعل تطبيقاتك ورموزك مع مورد مباشر (مثيل قاعدة بيانات، وحزمة تخزين، ودالة، وما إلى ذلك). |
تجريبي |
لا يتضمّن مشروع Firebase التجريبي أي إعدادات حقيقية في Firebase، كما لا يتضمّن أي موارد مباشرة. ويمكن عادةً الوصول إلى هذه المشاريع من خلال دروس تطبيقية حول الترميز أو برامج تعليمية أخرى. تبدأ أرقام تعريف المشاريع التجريبية بالبادئة |
عند استخدام مشاريع Firebase التجريبية، تتفاعل تطبيقاتك ورموزك مع المحاكيات فقط. إذا حاول تطبيقك التفاعل مع أحد الموارد التي لم يتم تشغيل محاكي لها، سيتعذّر تنفيذ هذا الرمز. |
ننصحك باستخدام المشاريع التجريبية كلما أمكن ذلك. تتضمّن المزايا ما يلي:
- إعداد أسهل، إذ يمكنك تشغيل المحاكيات بدون إنشاء مشروع على Firebase
- أمان أقوى، لأنه في حال استدعى الرمز عن طريق الخطأ موارد غير محاكية (إنتاج)، لن يكون هناك أي فرصة لتغيير البيانات أو استخدامها أو إصدار الفواتير
- إتاحة استخدام التطبيق بشكل أفضل بدون اتصال بالإنترنت، إذ لا يلزم الاتصال بالإنترنت لتنزيل إعدادات حزمة SDK
تجهيز تطبيقك للتواصل مع المحاكي
حِزم تطوير البرامج (SDK) على 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)
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 لـ Cloud Firestore أو Realtime Database. عند إعداد Authentication المحاكي وتشغيل محاكيات أخرى، تعمل هذه المحاكيات معًا تلقائيًا.
Admin SDK ثانية
يتم ربط Firebase Admin SDK تلقائيًا بمحاكي Authentication عند ضبط متغير البيئة FIREBASE_AUTH_EMULATOR_HOST
.
export FIREBASE_AUTH_EMULATOR_HOST="127.0.0.1:9099"
يُرجى العِلم أنّ محاكي Cloud Functions يتعرّف تلقائيًا على محاكي Authentication، لذا يمكنك تخطّي هذه الخطوة عند اختبار عمليات الدمج بين محاكيَي Cloud Functions وAuthentication. سيتم ضبط متغير البيئة تلقائيًا على Admin SDK في Cloud Functions.
بعد ضبط متغيّر البيئة، سيقبل 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 الأخرى أو حزمة تطوير البرامج (SDK) الخاصة بمشرفي Firebase عند ضبطها. سيتم رفض هذه الرموز المميزة من خلال خدمات Firebase المتاحة للجميع أو حزمة تطوير البرامج (SDK) الخاصة بـ Firebase Admin التي تعمل في وضع الإنتاج (مثل السلوك التلقائي بدون خطوات الإعداد الموضّحة أعلاه).
بدء تشغيل المحاكي
يمكنك استخدام Authentication المحاكي بشكل تفاعلي من خلال Emulator Suite UI وبشكل غير تفاعلي من خلال واجهة REST المحلية. تتناول الأقسام التالية حالات الاستخدام التفاعلية وغير التفاعلية.
لبدء تشغيل محاكي Authentication وواجهة REST الخاصة به وEmulator Suite UI، نفِّذ ما يلي:
firebase emulators:start
المصادقة باستخدام عنوان بريد إلكتروني محاكى ورابط بريد إلكتروني والمصادقة بدون تحديد الهوية
بالنسبة إلى المصادقة بدون تحديد الهوية، يمكن لتطبيقك تنفيذ منطق تسجيل الدخول لمنصتك (iOS وAndroid والويب).
بالنسبة إلى المصادقة باستخدام عنوان البريد الإلكتروني وكلمة المرور، يمكنك البدء في إنشاء النماذج الأولية من خلال إضافة حسابات المستخدمين إلى محاكي Authentication من تطبيقك باستخدام طرق Authentication SDK، أو باستخدام Emulator Suite UI.
- في Emulator Suite UI، انقر على علامة التبويب المصادقة.
- انقر على الزر إضافة مستخدم.
- اتّبِع معالج إنشاء حساب المستخدم، واملأ حقول مصادقة البريد الإلكتروني.
بعد إنشاء مستخدم اختباري، يمكن لتطبيقك تسجيل دخول المستخدم وخروجه باستخدام منطق حزمة تطوير البرامج (SDK) الخاص بمنصتك (iOS وAndroid والويب).
لاختبار عمليات التحقّق من عنوان البريد الإلكتروني أو تسجيل الدخول باستخدام روابط البريد الإلكتروني، يعرض المحاكي عنوان URL في نافذة الوحدة الطرفية التي تم تنفيذ 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"
}
}
لاختبار إعادة ضبط كلمات المرور، يطبع المحاكي عنوان URL مشابهًا، بما في ذلك المَعلمة 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 لإنشاء حسابات المستخدمين وحذفها واسترداد رموز إثبات ملكية عنوان البريد الإلكتروني خارج النطاق لتعبئة عنوان URL الخاص بإثبات ملكية عنوان البريد الإلكتروني في المحاكي. ويؤدي ذلك إلى إبقاء رمز النظام الأساسي ورمز الاختبار منفصلَين ويتيح لك إجراء الاختبار بدون تفاعل.
بالنسبة إلى تدفّقات اختبار البريد الإلكتروني وكلمة المرور غير التفاعلية، يكون التسلسل النموذجي كما يلي.
- يمكنك إنشاء مستخدمين باستخدام Authentication نقطة نهاية REST الخاصة بالتسجيل.
- سجِّل دخول المستخدمين باستخدام عناوين البريد الإلكتروني وكلمات المرور لإجراء الاختبارات.
- إذا كان ذلك منطبقًا على اختباراتك، يمكنك جلب رموز التحقّق المتاحة عبر البريد الإلكتروني خارج النطاق من نقطة نهاية REST الخاصة بالمحاكي.
- إفراغ سجلات المستخدمين باستخدام نقطة نهاية REST الخاصة بالمحاكي لمحو البيانات
مصادقة محاكية عبر الهاتف/الرسائل القصيرة
بالنسبة إلى مصادقة الهاتف، لا يتيح محاكي Auth ما يلي:
- عمليات reCAPTCHA وAPN بعد ضبطها للتفاعل مع المحاكي، توقف حِزم تطوير البرامج (SDK) من جهة العميل طُرق التحقّق هذه بطريقة مشابهة لتلك الموضّحة لاختبار التكامل (iOS وAndroid والويب).
- أرقام هواتف اختبارية مع رموز تم ضبطها مسبقًا في وحدة تحكّم Firebase
في ما عدا ذلك، من حيث رمز العميل، يكون مسار مصادقة الهاتف/الرسائل القصيرة مطابقًا للمسار الموضّح في الإصدار العلني (iOS وAndroid والويب).
استخدام Emulator Suite UI:
- في Emulator Suite UI، انقر على علامة التبويب المصادقة.
- انقر على الزر إضافة مستخدم.
- اتّبِع معالج إنشاء حساب المستخدم، مع ملء حقول مصادقة الهاتف.
ومع ذلك، بالنسبة إلى عمليات إثبات الهوية باستخدام الهاتف، لن يحفّز المحاكي عملية تسليم أي رسائل نصية، لأنّ التواصل مع مشغّل شبكة الجوّال ليس ضمن النطاق ولا يتيح إجراء اختبارات محلية بسهولة. بدلاً من ذلك، يطبع المحاكي الرمز الذي كان سيتم إرساله عبر رسالة SMS إلى الجهاز نفسه الذي نفّذت عليه الأمر firebase emulators:start
، لذا أدخِل هذا الرمز في التطبيق لمحاكاة المستخدمين الذين يتحقّقون من رسائلهم النصية.
الاختبار غير التفاعلي
لاختبار مصادقة الهاتف غير التفاعلية، استخدِم واجهة برمجة تطبيقات REST الخاصة بمحاكي Authentication لاسترداد رموز SMS المتاحة. يُرجى العِلم أنّ الرمز يختلف في كل مرة تبدأ فيها عملية التحقّق.
يكون التسلسل النموذجي على النحو التالي.
- اتّصِل بمنصة
signInWithPhoneNumber
لبدء عملية التحقّق من الهوية. - استرداد رمز التحقّق باستخدام نقطة نهاية REST الخاصة بالمحاكي
- اتّصِل بالرقم
confirmationResult.confirm(code)
كالمعتاد باستخدام رمز التحقّق.
رسائل SMS للمصادقة المتعدّدة العوامل
يتيح محاكي Authentication إنشاء نماذج أولية واختبار مسارات المصادقة المتعدّدة العوامل (MFA) عبر الرسائل القصيرة المتاحة في مرحلة الإنتاج على iOS وAndroid والويب.
عند إضافة مستخدم تجريبي إلى المحاكي، يمكنك تفعيل المصادقة المتعددة العوامل وإعداد رقم هاتف واحد أو أكثر سيتم إرسال رسائل SMS تتضمّن العامل الثاني إليه. يتم إخراج الرسائل إلى الوحدة الطرفية نفسها التي شغّلت فيها firebase emulators:start
، وتكون متاحة من واجهة REST.
مصادقة موفِّر الهوية (IDP) المحاكي التابع لجهة خارجية
يتيح لك المحاكي Authentication اختبار العديد من مسارات المصادقة التابعة لجهات خارجية في تطبيقات iOS أو Android أو الويب بدون إجراء أي تغييرات على رمز الإنتاج. للاطّلاع على أمثلة على عمليات المصادقة، راجِع المستندات الخاصة بمختلف مجموعات مقدّمي الخدمات والمنصات التي يمكنك استخدامها في تطبيقك.
بشكل عام، يمكنك استخدام حزمة تطوير البرامج (SDK) من Firebase للمصادقة بإحدى الطريقتَين التاليتَين:
- يسمح تطبيقك لحزمة SDK بمعالجة العملية بأكملها من البداية إلى النهاية، بما في ذلك جميع التفاعلات مع موفّري خدمات إدارة الهوية التابعين لجهات خارجية لاسترداد بيانات الاعتماد.
- يسترد تطبيقك بيانات الاعتماد يدويًا من موفِّر تابع لجهة خارجية باستخدام حزمة تطوير البرامج (SDK) الخاصة بهذا الموفِّر، ثم يمرّر بيانات الاعتماد هذه إلى حزمة تطوير البرامج (SDK) الخاصة بـ "Authentication".
مرّة أخرى، راجِع رابط المستندات أعلاه وتأكَّد من أنّك على دراية بأي مسار تريده، سواء كان مسار إدارة حزمة تطوير البرامج (SDK) في Firebase أو مسار استرداد بيانات الاعتماد يدويًا. يتيح محاكي Authentication اختبار أيّ من الطريقتَين.
اختبار مسارات موفّر خدمة الهوية المستندة إلى حزمة تطوير البرامج (SDK) من Firebase
إذا كان تطبيقك يستخدم أي مسار شامل لحزمة تطوير البرامج (SDK) من Firebase، مثل OAuthProvider
لتسجيل الدخول باستخدام Microsoft أو GitHub أو Yahoo، يوفّر المحاكي إصدارًا محليًا من صفحة تسجيل الدخول المعنية للمساعدة في اختبار المصادقة من تطبيقات الويب التي تستدعي الطريقتَين signinWithPopup
أو signInWithRedirect
.Authentication تظهر صفحة تسجيل الدخول المعروضة محليًا أيضًا في التطبيقات على الأجهزة الجوّالة، ويتم عرضها باستخدام مكتبة Webview الخاصة بمنصتك.
ينشئ المحاكي حسابات وشهادات اعتماد وهمية للمستخدمين التابعين لجهات خارجية حسب الحاجة أثناء تقدّم المسارات.
اختبار مسارات موفِّر الهوية من خلال استرداد بيانات الاعتماد يدويًا
إذا كنت تستخدم أساليب تسجيل الدخول "اليدوية" وتستدعي طريقة signInWithCredentials
في منصتك، سيطلب تطبيقك كالمعتاد تسجيل الدخول الفعلي باستخدام خدمة تابعة لجهة خارجية، وسيسترد بيانات الاعتماد الفعلية من الخدمة التابعة لجهة خارجية.
يُرجى العِلم أنّ المحاكي لا يتيح سوى مصادقة signInWithCredential
لبيانات الاعتماد التي يتم استردادها من ميزة "تسجيل الدخول باستخدام حساب Google" وApple وموفّري الخدمات الآخرين الذين يستخدمون رموز ID المميزة بتنسيق JSON Web Tokens (JWT). لا تتوافق هذه الخدمة مع رموز الدخول
(مثل الرموز التي يقدّمها Facebook أو Twitter، والتي ليست رموز ويب JSON). يناقش القسم التالي بديلاً في هذه الحالات.
الاختبار غير التفاعلي
أحد أساليب الاختبار غير التفاعلي هو برمجة نقرات المستخدم على صفحة تسجيل الدخول التي يعرضها المحاكي. بالنسبة إلى تطبيقات الويب، استخدِم واجهة تحكّم مثل WebDriver. بالنسبة إلى الأجهزة الجوّالة، استخدِم أدوات اختبار واجهة المستخدِم من منصتك، مثل Espresso أو Xcode.
بدلاً من ذلك، يمكنك تعديل الرمز البرمجي لاستخدام signInWithCredential
(مثلاً في فرع الرمز البرمجي) واستخدام عملية مصادقة الرمز المميّز مع رموز مميّزة وهمية لمعرّفات الحسابات بدلاً من بيانات الاعتماد الحقيقية.
- أعِد ربط الجزء من الرمز الذي يستردّ الرموز المميزة لبطاقة التعريف (idToken) من موفِّر الهوية (IDP) أو علِّق عليه، ما يزيل الحاجة إلى إدخال أسماء مستخدمين وكلمات مرور حقيقية أثناء الاختبارات، ويُعفي الاختبارات من حصص واجهة برمجة التطبيقات وحدود المعدّل في موفِّر الهوية.
- ثانيًا، استخدِم سلسلة JSON حرفية بدلاً من الرمز المميّز لـ
signInWithCredential
. باستخدام حزمة تطوير البرامج (SDK) للويب كمثال، يمكنك تغيير الرمز إلى:
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 مع المصادقة باستخدام رموز JSON المميّزة المخصّصة للويب من خلال إجراء طلبات إلى طريقة signInWithCustomToken
على الأنظمة الأساسية المتوافقة، كما هو موضّح في مستندات Authenticationالإنتاج.
أوجه الاختلاف بين محاكي Authentication وبيئة الإنتاج
يحاكي محاكي Firebase Authentication العديد من ميزات المنتج الفعلي. ومع ذلك، بما أنّ أي نوع من أنظمة المصادقة يعتمد بشكل كبير على الأمان على مستويات متعددة (الجهاز وموفّرو الخدمات التابعون لجهات خارجية وFirebase وما إلى ذلك)، يصعب على المحاكي إعادة إنشاء جميع العمليات بشكل صحيح.
Cloud IAM
لا تحاول "مجموعة أدوات المحاكاة" من Firebase تكرار أي سلوك مرتبط بإدارة الهوية وإمكانية الوصول (IAM) أو الالتزام به عند التشغيل. تلتزم المحاكيات بقواعد أمان Firebase المتوفّرة، ولكن في الحالات التي يتم فيها استخدام "إدارة الهوية وإمكانية الوصول" عادةً، مثلاً لضبط حساب الخدمة الذي يستدعي Cloud Functions وبالتالي الأذونات، لا يمكن ضبط المحاكي وسيستخدم الحساب المتاح على مستوى العالم على جهاز المطوّر، على غرار تشغيل نص برمجي محلي مباشرةً.
تسجيل الدخول من خلال رابط البريد الإلكتروني على الجهاز الجوّال
بما أنّ ميزة تسجيل الدخول باستخدام رابط إلكتروني تعتمد على "روابط Firebase الديناميكية" على المنصات المتوافقة مع الأجهزة الجوّالة، سيتم فتح جميع هذه الروابط على منصة الويب (المتوافقة مع الأجهزة الجوّالة) بدلاً من ذلك.
تسجيل الدخول من خلال جهة خارجية
بالنسبة إلى مسارات تسجيل الدخول من خلال جهة خارجية، تعتمد خدمة Firebase Authentication على بيانات اعتماد آمنة من موفّري خدمات تابعين لجهات خارجية، مثل Twitter وGithub.
يقبل المحاكي Authentication بيانات الاعتماد الحقيقية من موفّري OpenID Connect، مثل Google وApple. لا تتوافق بيانات الاعتماد من موفّري الخدمات غير المتوافقين مع OpenID Connect.
تسجيل الدخول باستخدام البريد الإلكتروني أو الرسائل القصيرة SMS
في التطبيقات المتاحة للإنتاج، تتضمّن عمليات تسجيل الدخول باستخدام البريد الإلكتروني والرسائل القصيرة عملية غير متزامنة يتحقّق فيها المستخدم من الرسالة التي تلقّاها ويدخل رمز تسجيل الدخول في واجهة تسجيل الدخول. لا يرسل المحاكي Authentication أي رسائل إلكترونية أو رسائل SMS، ولكن كما هو موضّح أعلاه، ينشئ رموز تسجيل الدخول ويعرضها في الجهاز الطرفي لاستخدامها في الاختبار.
لا يتيح المحاكي إمكانية تحديد أرقام هواتف اختبارية تتضمّن رموز تسجيل دخول ثابتة، كما يمكن إجراء ذلك باستخدام وحدة تحكّم Firebase.
المصادقة باستخدام رموز مميزة مخصّصة
لا يتحقّق Authentication المحاكي من صحة التوقيع أو تاريخ انتهاء الصلاحية للرموز المميّزة المخصّصة. يتيح لك ذلك استخدام الرموز المميزة المصمَّمة يدويًا وإعادة استخدام الرموز المميزة إلى أجل غير مسمى في سيناريوهات تصميم النماذج الأولية والاختبار.
تحديد المعدّل / مكافحة إساءة الاستخدام
لا يحاكي المحاكي Authentication ميزات الحدّ من معدّل الإنتاج أو مكافحة إساءة الاستخدام.
وظائف الحظر
في مرحلة الإنتاج، تتم كتابة بيانات المستخدمين في مساحة التخزين مرة واحدة بعد تشغيل الحدثين beforeCreate
وbeforeSignIn
. ومع ذلك، بسبب القيود الفنية، يكتب محاكي Authentication في مساحة التخزين مرتين، مرة بعد إنشاء المستخدم ومرة أخرى بعد تسجيل الدخول. وهذا يعني أنّه بالنسبة إلى المستخدمين الجدد، يمكنك استدعاء
getAuth().getUser()
في beforeSignIn
بنجاح في محاكي Authentication، ولكن سيحدث خطأ عند إجراء ذلك في بيئة الإنتاج.
ما هي الخطوات التالية؟
للحصول على مجموعة منظَّمة من الفيديوهات وأمثلة تفصيلية حول كيفية الاستخدام، يمكنك متابعة قائمة تشغيل التدريب على محاكيات Firebase.
بما أنّ الدوال المشغَّلة هي عملية دمج نموذجية مع Authentication، يمكنك الاطّلاع على مزيد من المعلومات عن محاكي "وظائف Firebase السحابية" في مقالة تشغيل الدوال محليًا.