قبل استخدام محاكي Authentication مع تطبيقك، تأكَّد من فهم سير عمل Firebase Local Emulator Suite العام، ومن تثبيت Local Emulator Suite وضبطه ومراجعة أوامر سطر الأوامر.
يفترض هذا الموضوع أنّك على دراية بتطوير حلول Firebase Authentication للنشر. راجِع المستندات لمزيج المنصة وأسلوب المصادقة إذا لزم الأمر.
ما الذي يمكنني فعله باستخدام محاكي Authentication؟
يقدّم محاكي Authentication محاكاة محلية عالية الدقة لخدمات Firebase Authentication، ما يوفر الكثير من الوظائف المتوفّرة في Firebase Authentication العلني. بالإضافة إلى منصات Apple، وحِزم SDK لنظامَي التشغيل Android وWeb من Firebase، يتيح لك المحاكي إجراء ما يلي:
- إنشاء حسابات مستخدمين محاكية وتعديلها وإدارتها لاختبار المصادقة باستخدام عنوان البريد الإلكتروني/كلمة المرور، رقم الهاتف/الرسائل القصيرة، والمصادقة المتعدّدة العوامل عبر الرسائل القصيرة، وموفّري هوية تابعين لجهات خارجية (مثل Google)
- عرض المستخدمين المحاكيين وتعديلهم
- نماذج أولية لأنظمة مصادقة الرموز المميّزة المخصّصة
- تحقّق من الرسائل المتعلّقة بالمصادقة في علامة التبويب "سجلّات واجهة المستخدم للمحاكي".
اختيار مشروع على Firebase
تحاكي Firebase Local Emulator Suite المنتجات لمشروع واحد على Firebase.
لاختيار المشروع الذي تريد استخدامه، قبل بدء المحاكيات، يمكنك تشغيل firebase use
في سطر الأوامر في دليل العمل. أو يمكنك تمرير العلامة--project
إلى كل أمر متعلق بالمحاكي.
Local Emulator Suite يتيح محاكاة مشاريع حقيقية ومشاريع تجريبية على Firebase.
نوع المشروع | الميزات | الاستخدام مع المحاكيات |
---|---|---|
حقيقي |
مشروع Firebase الحقيقي هو المشروع الذي أنشأته وضبطته (على الأرجح من خلال وحدة تحكّم Firebase). تحتوي المشاريع الحقيقية على موارد نشطة، مثل نُسخ قاعدة البيانات أو حِزم التخزين أو الدوالّ أو أيّ مورد آخر أعددته لهذا المشروع على Firebase. |
عند العمل مع مشاريع Firebase حقيقية، يمكنك تشغيل المحاكيات لأي أو كل المنتجات المتوافقة. بالنسبة إلى أي منتجات لا تحاكيها، ستتفاعل تطبيقاتك ورمزك البرمجي مع المورد النشط (مثيل قاعدة البيانات، وحزمة التخزين والدالة، وما إلى ذلك). |
تجريبي |
لا يتضمّن المشروع التجريبي على Firebase أيّ إعدادات حقيقية على Firebase ولا يتضمّن أيّ موارد نشطة. يتم الوصول إلى هذه المشاريع عادةً من خلال دروس تطبيقية حول الترميز أو برامج تعليمية أخرى. تبدأ أرقام تعريف المشاريع التجريبية بالبادئة |
عند العمل مع مشاريع Firebase التجريبية، تتفاعل تطبيقاتك ورموزك البرمجية مع المحاكيات فقط. إذا حاول تطبيقك التفاعل مع مورد لا يعمل عليه المحاكي، سيتعطّل هذا الرمز البرمجي. |
ننصحك باستخدام المشاريع التجريبية كلما أمكن. تتضمّن المزايا ما يلي:
- إعداد أسهل، لأنّه يمكنك تشغيل المحاكيات بدون إنشاء مشروع Firebase مطلقًا
- أمان أقوى، لأنّه إذا استدعى الرمز البرمجي عن طريق الخطأ موارد (إنتاج) غير محاكية، لن يكون هناك احتمال لتغيير البيانات واستخدامها والفوترة
- إتاحة استخدام حزمة SDK بلا إنترنت، لأنّه ليس عليك الاتصال بالإنترنت لتنزيل إعدادات حزمة SDK
تجهيز تطبيقك للتواصل مع المحاكي
حِزم تطوير البرامج (SDK) لنظامَي التشغيل Android وiOS والويب
يمكنك إعداد الإعدادات داخل التطبيق أو فئات الاختبار للتفاعل مع محاكي 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");
ما مِن إعداد إضافي مطلوب لإنشاء نماذج أولية لاختبار التفاعلات بين 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 SDK علامات تعريف
غير الموقَّعة وملفات تعريف ارتباط الجلسات التي يصدرها محاكي Authentication (من خلال الطريقتَين verifyIdToken
وcreateSessionCookie
على التوالي) لتسهيل التطوير العميق
والاختبار. يُرجى التأكّد من عدم ضبط متغيّر البيئة في مرحلة الإنتاج.
إذا كنت تريد ربط رمز Admin SDK بمحاكي مشترَك يعمل في
بيئة أخرى، عليك تحديد رقم تعريف المشروع نفسه الذي ضبطته باستخدام واجهة برمجة التطبيقات Firebase CLI. يمكنك تمرير معرّف مشروع إلى initializeApp
مباشرةً أو ضبط متغيّر البيئة GCLOUD_PROJECT
.
حزمة تطوير البرامج (SDK) لمشرف Node.js
admin.initializeApp({ projectId: "your-project-id" });
متغيّر البيئة
export GCLOUD_PROJECT="your-project-id"
رموز التعريف
لأسباب تتعلق بالأمان، يُصدر محاكي Authentication رموز تعريف غير موقَّعة، والتي لا تقبلها سوى محاكيات Firebase الأخرى أو حزمة تطوير البرامج (SDK) لمشرف Firebase عند إعدادها. سترفض خدمات Firebase في مرحلة الإنتاج أو حزمة تطوير البرامج (SDK) لمشرف Firebase التي تعمل في وضع الإنتاج هذه الرموز المميّزة (مثل السلوك التلقائي بدون خطوات الإعداد الموضّحة أعلاه).
ابدأ تشغيل المحاكي.
يمكنك استخدام محاكي Authentication بشكل تفاعلي من خلال Emulator Suite UI وغير تفاعلي من خلال واجهة REST المحلية. تتناول ال أقسام التالية حالات الاستخدام التفاعلية وغير التفاعلية.
لبدء محاكي Authentication وواجهة برمجة التطبيقات REST وEmulator Suite UI، نفِّذ ما يلي:
firebase emulators:start
البريد الإلكتروني المحاكي ورابط البريد الإلكتروني والمصادقة المجهولة
بالنسبة إلى المصادقة المجهولة، يمكن لتطبيقك تطبيق منطق تسجيل الدخول لنظام التشغيل (iOS وAndroid الويب).
بالنسبة إلى مصادقة البريد الإلكتروني/كلمة المرور، يمكنك بدء إنشاء النماذج الأولية من خلال إضافة حسابات المستخدمين إلى محاكي Authentication من تطبيقك باستخدام طرق حزمة تطوير البرامج (SDK) لنظام التشغيل Authentication، أو باستخدام 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 لإنشاء حسابات المستخدمين وحذفها واسترداد رموز التحقّق من البريد الإلكتروني خارج النطاق لملء عنوان URL الخاص بميزة التحقّق من البريد الإلكتروني في المحاكي. ويحافظ ذلك على الفصل بين الرمز البرمجي للمنصة والرمز البرمجي للاختبار، ويسمح لك بإجراء الاختبار بدون تفاعل.
بالنسبة إلى مسارات اختبار البريد الإلكتروني وكلمة المرور غير التفاعُلية، يكون التسلسل المعتاد على النحو التالي.
- أنشئ مستخدمين باستخدام Authentication نقطة نهاية signUp REST.
- سجِّل دخول المستخدمين باستخدام عناوين البريد الإلكتروني وكلمات المرور لإجراء الاختبارات.
- إذا كان ذلك منطبقًا على اختباراتك، يمكنك جلب رموًا متاحًة خارج النطاق للتحقّق من البريد الإلكتروني من نقطة نهاية REST الخاصة بالمحاكي.
- يمكنك تفريغ سجلات المستخدمين باستخدام نقطة نهاية REST الخاصة بالمحاكي لمحو البيانات.
المصادقة عبر الهاتف/الرسائل القصيرة المحاكية
بالنسبة إلى مصادقة الهاتف، لا يتيح محاكي Auth ما يلي:
- عمليات reCAPTCHA وAPN بعد الضبط للتفاعل مع المحاكي، توقف حِزم تطوير البرامج (SDK) للعملاء methods هذه بطريقة مشابهة لتلك الموضّحة في اختبار الدمج (iOS وAndroid والويب).
- اختبِر أرقام الهواتف باستخدام الرموز التي تم ضبطها مسبقًا في وحدة تحكّم Firebase.
بخلاف ذلك، من حيث رمز العميل، تكون عملية مصادقة الهاتف/الرسائل القصيرة مماثلة لتلك الموضّحة للإصدار العلني (iOS Android والويب).
باستخدام Emulator Suite UI:
- في Emulator Suite UI، انقر على علامة التبويب المصادقة.
- انقر على الزر إضافة مستخدم.
- اتّبِع خطوات معالج إنشاء حساب المستخدم، مع ملء حقلَي مصادقة الهاتف.
ومع ذلك، بالنسبة إلى عمليات مصادقة الهوية عبر الهاتف، لن يؤدي المحاكي إلى تسليم
أي رسائل نصية، لأنّ التواصل مع مشغّل شبكة الجوّال خارج النطاق وغير مناسب
للاختبار المحلي. بدلاً من ذلك، يطبع المحاكي الرمز الذي كان سيتم إرساله عبر الرسائل القصيرة إلى المحطة الطرفية نفسها التي تم فيها تشغيل firebase emulators:start
. أدخِل هذا الرمز في التطبيق لمحاكاة المستخدمين عند اطّلاعهم على رسائلهم النصية.
الاختبار غير التفاعلي
لاختبار المصادقة غير التفاعلية عبر الهاتف، استخدِم Authentication المحاكي واجهة برمجة التطبيقات REST API لاسترداد رموز الرسائل القصيرة المتاحة. يُرجى العِلم أنّ الرمز يختلف كل مرّة تبدأ فيها عملية الإعداد.
يكون التسلسل المعتاد على النحو التالي.
- يُرجى الاتصال بمنصّة
signInWithPhoneNumber
لبدء عملية إثبات الهوية. - استرداد رمز التحقّق باستخدام نقطة نهاية REST الخاصة بالمحاكي
- يُرجى الاتصال بالرقم
confirmationResult.confirm(code)
كالمعتاد وإبلاغنا برمز التحقّق.
المصادقة المتعدّدة العوامل عبر الرسائل القصيرة
يتيح محاكي Authentication إنشاء النماذج الأولية واختبار مسارات مصادقة الصعوبات المتعدّدة (MFA) عبر الرسائل القصيرة المتوفّرة في مرحلة الإنتاج لنظامَي التشغيل iOS وAndroid والويب.
عند إضافة مستخدم وهمي إلى المحاكي، يمكنك تفعيل ميزة "التحقّق من خطوتَين" وضبط رقم هاتف واحد
أو أكثر سيتم إرسال رسائل SMS إليه لتأكيد العملية. يتم إخراج الرسائل
إلى المحطة الطرفية نفسها التي تم تشغيل firebase emulators:start
فيها،
وتكون متاحة من واجهة REST.
مصادقة موفِّر الهوية المحاكي التابع لجهة خارجية
يتيح لك محاكي Authentication اختبار العديد من عمليات المصادقة التابعة لجهات خارجية في تطبيقات iOS أو Android أو تطبيقات الويب بدون إجراء أي تغييرات على رمز الإنتاج. للحصول على أمثلة على عمليات المصادقة، يمكنك الرجوع إلى المستندات المتعلّقة بمختلف مجموعات مزوّدي الخدمات والمنصّات التي يمكنك استخدامها في تطبيقك.
بشكل عام، يمكنك استخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase للمصادقة من خلال إحدى الطريقتَين التاليتَين:
- يسمح تطبيقك لحزمة SDK بمعالجة العملية بالكامل من البداية إلى النهاية، بما في ذلك جميع التفاعلات مع موفّري خدمات إدارة الهوية التابعين لجهات خارجية لاسترداد بيانات الاعتماد.
- يسترجع تطبيقك بيانات الاعتماد يدويًا من موفِّر تابع لجهة خارجية باستخدام حزمة SDK التابعة لجهة خارجية ويرسل بيانات الاعتماد هذه إلى حزمة SDK الخاصة بمنصّة Authentication.
يُرجى الرجوع مرة أخرى إلى رابط المستندات أعلاه والتأكّد من أنّك على دراية بالخطوات التي تريد استخدامها، سواء كانت حزمة تطوير البرامج (SDK) لمنصّة Firebase أو استرداد بيانات الاعتماد يدويًا. يتيح محاكي Authentication اختبار أيّ من الطريقتَين.
اختبار عمليات تسجيل الدخول وتسجيل الخروج المستندة إلى حزمة تطوير البرامج (SDK) لمنصّة Firebase
إذا كان تطبيقك يستخدم أي عملية متكاملة لحزمة تطوير البرامج (SDK) من Firebase، مثل OAuthProvider
لتسجيل الولوج باستخدام Microsoft أو GitHub أو Yahoo، لأغراض الاختبار التفاعلي، يعرض محاكي Authentication
إصدارًا محليًا من صفحة تسجيل الدخول المقابلة لمساعدتك في اختبار المصادقة من تطبيقات الويب التي تستدعي signinWithPopup
أو
signInWithRedirect
. تظهر أيضًا صفحة تسجيل الدخول هذه المعروضة محليًا في
التطبيقات المتوافقة مع الأجهزة الجوّالة، والتي تعرِضها مكتبة webview في نظام التشغيل.
ينشئ المحاكي حسابات مستخدمين وبيانات اعتماد وهمية تابعة لجهات خارجية حسب الحاجة أثناء متابعة مسارات الاختبار.
اختبار عمليات موفِّر الهوية (IdP) من خلال استرداد بيانات الاعتماد يدويًا
إذا كنت تستخدِم تقنيات تسجيل الدخول "اليدوية" وتستدعي signInWithCredentials
طريقة منصّتك، سيطلب تطبيقك تسجيل الدخول إلى جهة خارجية حقيقية و retrieving real third-party credentials كالمعتاد.
يُرجى العِلم أنّ المحاكي لا يتيح سوى مصادقة signInWithCredential
لبيانات الاعتماد التي يتم استرجاعها من ميزة "تسجيل الدخول باستخدام حساب Google" وApple ومزوّدي الخدمات الآخرين الذين
يستخدمون رموز التعريف التي يتم تنفيذها كـ "رموز JSON المميّزة للويب". لا يُسمح باستخدام علامات الوصول
(مثل تلك التي يوفّرها Facebook أو Twitter والتي لا تكون من نوع JWT). يناقش القسم التالي بديلاً لهذه الحالات.
الاختبار غير التفاعلي
من بين طرق الاختبار غير التفاعلي، برمجة نقرات المستخدمين على صفحة تسجيل الدخول التي يعرضها المحاكي. بالنسبة إلى تطبيقات الويب، استخدِم واجهة تحكّم مثل WebDriver. بالنسبة إلى الأجهزة الجوّالة، استخدِم أدوات اختبار واجهة المستخدِم من منصّتك، مثل Espresso أو Xcode.
بدلاً من ذلك، يمكنك تعديل الرمز البرمجي لاستخدام signInWithCredential
(على سبيل المثال، في فرع رمز) واستخدام عملية مصادقة باستخدام الرمز المميّز مع رموزم هُوية مزوّرة للحسابات بدلاً من بيانات الاعتماد الحقيقية.
- أعِد توصيل الجزء من الرمز البرمجي الذي يستردّ idTokens من موفِّر الهوية (IdP) أو أضِف تعليقًا توضيحيًا عليه. سيؤدي ذلك إلى عدم الحاجة إلى إدخال أسماء مستخدمين وكلمات مرور حقيقية أثناء الاختبارات، كما سيخفّف من اختباراتك حصص واجهة برمجة التطبيقات وحدود معدّلاتها في موفِّر الهوية (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 والإصدار العلني
يحاكي محاكي Authentication Firebase العديد من ميزات المنتج المخصّص للإصدار العلني. ومع ذلك، بما أنّ أي نوع من أنظمة المصادقة يعتمد بشكل كبير على الأمان على مستويات متعدّدة (الجهاز، والموفّرون التابعون لجهات خارجية، وFirebase، وغيرها)، من الصعب على المحاكي إعادة إنشاء جميع عمليات الربط بشكل صحيح.
Cloud IAM
لا تحاول مجموعة أدوات المحاكاة في Firebase تكرار أي سلوك مرتبط بإدارة الهوية وإمكانية الوصول (IAM) أو الالتزام به. تلتزم المحاكيات بقواعد أمان Firebase المقدَّمة، ولكن في الحالات التي يتم فيها استخدام إدارة الهوية وإمكانية الوصول (IAM) عادةً، على سبيل المثال لضبط Cloud Functions التي تستدعي حساب الخدمة وبالتالي الأذونات، لن يكون المحاكي قابلاً للضبط وسيستخدم الحساب المتاح على مستوى العالم على جهاز المطوّر، تمامًا مثل تشغيل نص برمجي محلي مباشرةً.
تسجيل الدخول باستخدام رابط البريد الإلكتروني على الجهاز الجوّال
بما أنّ تسجيل الدخول باستخدام رابط البريد الإلكتروني يعتمد على "روابط Firebase الديناميكية" على منصات الأجهزة الجوّالة، سيتم فتح جميع هذه الروابط على منصة الويب (الأجهزة الجوّالة) بدلاً من ذلك.
طلبات تسجيل الدخول من خدمات الجهات الخارجية
بالنسبة إلى مسارات تسجيل الدخول التابعة لجهات خارجية، تعتمد Firebase Authentication على بيانات اعتماد آمنة من موفّري خدمات خارجيين مثل Twitter وGithub.
يقبل محاكي Authentication بيانات الاعتماد الحقيقية من موفّري OpenID Connect، مثل Google وApple. لا يمكن استخدام بيانات الاعتماد من موفّري خدمات غير OpenID Connect.
تسجيل الدخول باستخدام البريد الإلكتروني أو الرسائل القصيرة
في التطبيقات العلنية، تتضمّن عمليات تسجيل الدخول عبر البريد الإلكتروني والرسائل القصيرة عملية تتم بشكل غير متزامن، حيث يتحقق المستخدم من الرسالة المستلَمة ويُدخِل رمز تسجيل الدخول في واجهة تسجيل الدخول. لا يُرسِل محاكي Authentication أي رسائل إلكترونية أو رسائل SMS، ولكن كما هو موضّح أعلاه، فإنه يُنشئ رموز تسجيل الدخول ويعرضها على وحدة التحكّم الطرفية لاستخدامها في الاختبار.
لا يتيح المحاكي إمكانية تحديد أرقام هواتف اختبارية باستخدام رموز تسجيل دخول ثابتة كما يمكن إجراء ذلك باستخدام وحدة تحكّم Firebase.
مصادقة الرموز المميّزة المخصّصة
لا يتحقق محاكي Authentication من صحة توقيع علاماتهم المخصّصة أو انتهاء صلاحيتها. يتيح لك ذلك استخدام الرموز المخصّصة وإعادة استخدام الرموز بشكل غير محدود في سيناريوهات وضع النماذج الأولية والاختبار.
الحدّ من معدّل الطلبات / مكافحة إساءة الاستخدام
لا يُنشئ محاكي Authentication ميزات تقييد معدّل الإنتاج أو ميزات منع إساءة الاستخدام.
حظر الدوالّ
في مرحلة الإنتاج، يتم تسجيل المستخدِمين في مساحة التخزين مرّة واحدة بعد بدء كلّ من حدثَي beforeCreate
وbeforeSignIn
. ومع ذلك، بسبب القيود الفنية،
يكتب محاكي Authentication البيانات في مساحة التخزين مرتين، مرة بعد إنشاء المستخدم و
مرة أخرى بعد تسجيل الدخول. وهذا يعني أنّه بالنسبة إلى المستخدمين الجدد، يمكنك استدعاء
getAuth().getUser()
في beforeSignIn
في محاكي Authentication بنجاح، ولكنك
ستواجه خطأً عند إجراء ذلك في قناة الإصدار العلني.
الخطوة التالية
للحصول على مجموعة منظَّمة من الفيديوهات وأمثلة مفصّلة حول كيفية الاستخدام، اتّبِع قائمة تشغيل التدريب على محاكيات Firebase.
بما أنّ الدوال المشغَّلة هي عملية دمج نموذجية مع Authentication، يمكنك الاطّلاع على مزيد من المعلومات عن محاكي "وظائف السحابة الإلكترونية لبرنامج Firebase" في مقالة تشغيل الدوال محليًا.