ربط تطبيقك بمحاكي المصادقة

قبل استخدام محاكي Authentication مع تطبيقك، تأكَّد من فهم سير عمل Firebase Local Emulator Suite بشكل عام، ومن تثبيت وإعداد Local Emulator Suite ومراجعة أوامر واجهة سطر الأوامر.

يفترض هذا الموضوع أنّك على دراية بتطوير حلول Firebase Authentication للإنتاج. عند الحاجة، راجِع المستندات الخاصة بالمنصة وأسلوب المصادقة اللذين تستخدمهما.

ما الذي يمكنني فعله باستخدام محاكي Authentication؟

يوفّر محاكي Authentication محاكاة محلية عالية الدقة لخدمات Firebase Authentication، ما يتيح استخدام الكثير من الوظائف المتوفّرة في Firebase Authentication الإنتاجية. يتيح لك المحاكي، إلى جانب حِزم تطوير البرامج (SDK) لمنصات Apple وAndroid والويب في Firebase، تنفيذ ما يلي:

  • إنشاء حسابات مستخدمين محاكاة وتحديثها وإدارتها لاختبار البريد الإلكتروني/كلمة المرور، رقم الهاتف/الرسائل القصيرة، والمصادقة المتعددة العوامل عبر الرسائل القصيرة، وموفّر الهوية التابع لجهة خارجية (مثل Google) المصادقة
  • عرض المستخدمين الذين تمت محاكاتهم وتعديلهم
  • إنشاء نماذج أولية لأنظمة المصادقة المخصّصة المستندة إلى الرموز المميّزة
  • اطّلِع على الرسائل المتعلّقة بالمصادقة في علامة التبويب "سجلّات واجهة مستخدم المحاكي".

اختيار مشروع Firebase

يحاكي Firebase Local Emulator Suite المنتجات لمشروع Firebase واحد.

لاختيار المشروع الذي تريد استخدامه، قبل بدء المحاكيات، نفِّذ الأمر firebase use في واجهة سطر الأوامر في دليل العمل. أو يمكنك تمرير العلامة --project إلى كل أمر من أوامر المحاكي.

يتيح Local Emulator Suite محاكاة مشاريع Firebase الحقيقية والمشاريع التجريبية.

نوع المشروع الميزات الاستخدام مع المحاكيات
ريال

مشروع Firebase الحقيقي هو مشروع أنشأته وأعددته (على الأرجح من خلال وحدة تحكّم Firebase).

تحتوي المشاريع الحقيقية على موارد نشطة، مثل مثيلات قواعد البيانات أو حِزم التخزين أو الدوال أو أي موارد أخرى تم إعدادها لمشروع Firebase هذا.

عند العمل على مشاريع Firebase حقيقية، يمكنك تشغيل المحاكيات لأي من المنتجات المتوافقة أو جميعها.

بالنسبة إلى أي منتجات لا تحاكيها، ستتفاعل تطبيقاتك والرمز البرمجي مع المورد المباشر (مثيل قاعدة البيانات، حزمة التخزين، الدالة، وما إلى ذلك).

تجريبي

لا يتضمّن مشروع Firebase التجريبي أي إعدادات حقيقية في Firebase ولا يتضمّن أي موارد مباشرة. ويمكن عادةً الوصول إلى هذه المشاريع من خلال الدروس التطبيقية حول الترميز أو البرامج التعليمية الأخرى.

تحتوي أرقام تعريف المشاريع التجريبية على البادئة demo-.

عند العمل على مشاريع 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)
Unity
FirebaseAuth auth = FirebaseAuth.DefaultInstance;
// Connects to the Auth Emulator running on port 9099
auth.UseEmulator("127.0.0.1", 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.

عند ضبط متغيّر البيئة، ستقبل حِزم تطوير البرامج (SDK) لـ Firebase Admin SDK رموز تعريف مميزة غير موقَّعة وملفات تعريف الارتباط للجلسة الصادرة عن محاكي 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 الأخرى أو مدير 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.

  1. في Emulator Suite UI، انقر على علامة التبويب المصادقة.
  2. انقر على الزر إضافة مستخدم.
  3. اتّبِع معالج إنشاء حساب المستخدم، واملأ حقول مصادقة البريد الإلكتروني.

بعد إنشاء مستخدم تجريبي، يمكن لتطبيقك تسجيل دخول المستخدم وخروجه باستخدام منطق حزمة تطوير البرامج (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 الخاص بالتحقّق من عناوين البريد الإلكتروني في المحاكي. يؤدي ذلك إلى فصل رمز النظام الأساسي عن رمز الاختبار ويتيح لك إجراء الاختبار بشكل غير تفاعلي.

بالنسبة إلى مسارات اختبار البريد الإلكتروني وكلمة المرور غير التفاعلية، يكون التسلسل المعتاد على النحو التالي.

  1. أنشئ مستخدمين باستخدام Authentication نقطة نهاية REST لـ signUp.
  2. سجِّل دخول المستخدمين باستخدام عناوين البريد الإلكتروني وكلمات المرور لإجراء الاختبارات.
  3. إذا كان ذلك منطبقًا على اختباراتك، يمكنك جلب رموز تأكيد عنوان البريد الإلكتروني المتاحة خارج النطاق من نقطة نهاية REST الخاصة بالمحاكي.
  4. احذف سجلّات المستخدمين باستخدام نقطة نهاية REST الخاصة بالمحاكي لمحو البيانات.

المصادقة عبر الهاتف أو الرسائل القصيرة (SMS) التي تمت محاكاتها

بالنسبة إلى المصادقة عبر الهاتف، لا يتيح محاكي Auth ما يلي:

  • سير عمل reCAPTCHA وAPN بعد ضبط حِزم تطوير البرامج (SDK) للعملاء للتفاعل مع المحاكي، يتم إيقاف طرق التحقّق هذه بطريقة مشابهة لتلك الموضّحة في اختبار الدمج (iOS وAndroid والويب).
  • اختبِر أرقام الهواتف باستخدام الرموز التي تم ضبطها مسبقًا في وحدة تحكّم Firebase.

بخلاف ذلك، من حيث رمز العميل، فإنّ عملية المصادقة عبر الهاتف أو الرسائل القصيرة تتطابق مع تلك الموضّحة للإنتاج (iOS وAndroid والويب).

باستخدام Emulator Suite UI:

  1. في Emulator Suite UI، انقر على علامة التبويب المصادقة.
  2. انقر على الزر إضافة مستخدم.
  3. اتّبِع معالج إنشاء حساب المستخدم، واملأ حقول مصادقة الهاتف.

ومع ذلك، بالنسبة إلى عمليات المصادقة عبر الهاتف، لن يؤدي المحاكي إلى بدء تسليم أي رسائل نصية، لأنّ الاتصال بمشغّل شبكة الجوّال خارج النطاق وليس مناسبًا للاختبار المحلي. بدلاً من ذلك، يطبع المحاكي الرمز الذي كان من المفترض إرساله عبر رسالة نصية قصيرة إلى الوحدة الطرفية نفسها التي شغّلت firebase emulators:start عليها. أدخِل هذا الرمز في التطبيق لمحاكاة المستخدمين الذين يتحققون من رسائلهم النصية.

الاختبار غير التفاعلي

لاختبار المصادقة عبر الهاتف غير التفاعلية، استخدِم واجهة برمجة التطبيقات REST API لمحاكي Authentication لاسترداد رموز SMS المتاحة. يُرجى العِلم أنّ الرمز يختلف في كل مرة تبدأ فيها العملية.

في ما يلي التسلسل المعتاد.

  1. يُرجى الاتصال بالمنصة "signInWithPhoneNumber" لبدء عملية التحقّق.
  2. استرداد رمز التحقّق باستخدام نقطة نهاية REST الخاصة بالمحاكي
  3. الاتصال بالرقم confirmationResult.confirm(code) كالمعتاد باستخدام رمز التحقّق

رسائل SMS متعددة العوامل

يتيح محاكي Authentication إنشاء النماذج الأولية واختبار مسارات المصادقة المتعدّدة العوامل (MFA) عبر الرسائل القصيرة المتاحة في مرحلة الإنتاج لنظامَي التشغيل iOS وAndroid والويب.

عند إضافة مستخدم وهمي إلى المحاكي، يمكنك تفعيل المصادقة المتعدّدة العوامل وضبط رقم هاتف واحد أو أكثر لإرسال رسائل SMS الخاصة بالعامل الثاني إليه. يتم إخراج الرسائل إلى الوحدة الطرفية نفسها التي تم تشغيل firebase emulators:start عليها، وتكون متاحة من واجهة REST.

محاكاة مصادقة موفّر الهوية (IDP) التابع لجهة خارجية

يتيح لك محاكي Authentication اختبار العديد من مسارات المصادقة التابعة لجهات خارجية في تطبيقات iOS أو Android أو الويب بدون إجراء أي تغييرات على رمز الإنتاج. للاطّلاع على أمثلة على مسارات المصادقة، يمكنك مراجعة المستندات الخاصة بمختلف مجموعات مقدّمي الخدمات والمنصات التي يمكنك استخدامها في تطبيقك.

بشكل عام، يمكنك استخدام حزمة تطوير البرامج (SDK) لمنصّة Firebase للمصادقة بإحدى الطريقتَين التاليتَين:

  • يتيح تطبيقك لحزمة SDK معالجة العملية بأكملها من البداية إلى النهاية، بما في ذلك جميع التفاعلات مع موفّري خدمات إدارة الهوية (IDP) التابعين لجهات خارجية لاسترداد بيانات الاعتماد.
  • يسترد تطبيقك بيانات الاعتماد يدويًا من مقدّم خدمة خارجي باستخدام حزمة تطوير البرامج (SDK) الخاصة بهذا الطرف، ثم يمرّر بيانات الاعتماد هذه إلى حزمة تطوير البرامج (SDK) لـ "Authentication".

يُرجى مراجعة رابط المستندات أعلاه مرة أخرى والتأكّد من أنّك على دراية بأيّ من المسارَين اللذين تريد استخدامهما: المسار الذي تديره حزمة تطوير البرامج (SDK) لمنصة Firebase أو المسار اليدوي لاسترداد بيانات الاعتماد. يتيح محاكي Authentication اختبار أي من الطريقتين.

اختبار مسارات موفّري الهوية المستندة إلى حزمة تطوير البرامج (SDK) لمنصّة Firebase

إذا كان تطبيقك يستخدم أي مسار شامل لحزمة تطوير البرامج (SDK) من Firebase، مثل OAuthProvider لتسجيل الدخول باستخدام Microsoft أو GitHub أو Yahoo، لإجراء اختبار تفاعلي، يوفّر محاكي Authentication نسخة محلية من صفحة تسجيل الدخول المقابلة لمساعدتك في اختبار المصادقة من تطبيقات الويب التي تستدعي طريقة signinWithPopup أو signInWithRedirect. تظهر صفحة تسجيل الدخول هذه التي يتم عرضها محليًا أيضًا في التطبيقات المتوافقة مع الأجهزة الجوّالة، والتي يتم عرضها من خلال مكتبة WebView في نظامك الأساسي.

ينشئ المحاكي حسابات مستخدمين وهمية تابعة لجهات خارجية وبيانات اعتماد حسب الحاجة أثناء سير العمليات.

اختبار مسارات موفِّر الهوية (IDP) من خلال استرداد بيانات الاعتماد يدويًا

إذا كنت تستخدم أساليب تسجيل الدخول "اليدوية" وتستدعي طريقة signInWithCredentials في منصتك، سيطلب تطبيقك كالمعتاد تسجيل الدخول إلى حساب حقيقي تابع لجهة خارجية واسترداد بيانات اعتماد حقيقية تابعة لجهة خارجية.

يُرجى العِلم أنّ المحاكي يتيح فقط مصادقة signInWithCredential لبيانات الاعتماد التي يتم استردادها من "تسجيل الدخول باستخدام حساب Google" وApple ومقدّمي الخدمات الآخرين الذين يستخدمون الرموز المميّزة للتعريف التي يتم تنفيذها كرموز ويب مميّزة بتنسيق JSON‏ (JWT). لا تتوافق هذه الميزة مع رموز الدخول (مثل تلك التي يوفّرها Facebook أو Twitter، والتي لا تُعدّ رموز JWT). يتناول القسم التالي بديلاً في هذه الحالات.

الاختبار غير التفاعلي

تتمثل إحدى طرق الاختبار غير التفاعلي في برمجة نقرات المستخدمين على صفحة تسجيل الدخول التي يعرضها المحاكي. بالنسبة إلى تطبيقات الويب، استخدِم واجهة تحكّم مثل WebDriver. بالنسبة إلى الأجهزة الجوّالة، استخدِم أدوات اختبار واجهة المستخدم من منصتك، مثل Espresso أو Xcode.

بدلاً من ذلك، يمكنك تعديل الرمز البرمجي لاستخدام signInWithCredential (على سبيل المثال، في نسخة فرعية من الرمز البرمجي) واستخدام عملية مصادقة الرمز المميّز مع رموز مميّزة وهمية لتعريف الحسابات بدلاً من بيانات الاعتماد الحقيقية.

  1. أعِد ربط أو الإشارة إلى أسطر رموز باعتبارها تعليقًا في الجزء من الرمز الذي يسترد idTokens من موفِّر الهوية (IDP)، ما يزيل الحاجة إلى إدخال أسماء مستخدمين وكلمات مرور حقيقية أثناء الاختبارات، ويُعفي اختباراتك من حصص واجهة برمجة التطبيقات وحدود المعدّل لدى موفِّر الهوية (IDP).
  2. ثانيًا، استخدِم سلسلة JSON حرفية بدلاً من الرمز المميّز لـ signInWithCredential. باستخدام حزمة تطوير البرامج (SDK) للويب كمثال، يمكنك تغيير الرمز إلى:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

عند استخدام هذا الرمز مع المحاكي، ستتم مصادقة المستخدم بنجاح باستخدام عنوان البريد الإلكتروني foo@example.com في Google. يمكنك اعتبار حقل sub كمفتاح أساسي، يمكن تغييره إلى أي سلسلة، ما يتيح محاكاة تسجيل دخول مستخدمين مختلفين. يمكنك استبدال 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 السحابية" في مقالة تشغيل الدوال محليًا.