Google 致力于为黑人社区推动种族平等。查看具体举措
ترجمت واجهة Cloud Translation API‏ هذه الصفحة.
Switch to English

قم بتوصيل تطبيقك بـ Authentication Emulator

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

ماذا يمكنني أن أفعل بمحاكي المصادقة؟

يوفر محاكي المصادقة محاكاة محلية عالية الدقة لخدمات مصادقة Firebase ، مما يوفر الكثير من الوظائف الموجودة في مصادقة Firebase . يتيح لك المحاكي ، عند إقرانه مع تطبيقات iOS و Android و Firebase SDK للويب ، ما يلي:

  • إنشاء وتحديث وإدارة حسابات المستخدمين التي تمت محاكاتها لاختبار البريد الإلكتروني / كلمة المرور ورقم الهاتف / الرسائل القصيرة وتسجيل الدخول مع موفري الهوية الخارجيين (مثل Google)
  • عرض وتحرير المستخدمين الذين تمت محاكاتهم
  • تحقق من الرسائل المتعلقة بالمصادقة في علامة التبويب سجلات واجهة مستخدم المحاكي.

صك تطبيقك للتحدث إلى محاكي المصادقة

Android و iOS و Web SDK

قم بإعداد التكوين داخل التطبيق أو فصول الاختبار للتفاعل مع محاكي المصادقة على النحو التالي.

ذكري المظهر
FirebaseAuth.getInstance().useEmulator('10.0.2.2', 9099);
iOS - سويفت
Auth.auth().useEmulator(withHost:"localhost", port:9099)
الويب
var auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

ليست هناك حاجة إلى أي إعداد إضافي لنموذج أولي واختبار التفاعلات بين المصادقة والوظائف السحابية أو قواعد أمان Firebase لـ Cloud Firestore أو Realtime Database. عند تكوين محاكي المصادقة وتشغيل المحاكيات الأخرى ، فإنها تعمل معًا تلقائيًا.

SDKs للمشرف

يتصل Firebase Admin SDK لـ Node.js تلقائيًا FIREBASE_AUTH_EMULATOR_HOST المصادقة عند FIREBASE_AUTH_EMULATOR_HOST متغير البيئة FIREBASE_AUTH_EMULATOR_HOST .

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

لاحظ أن محاكي Cloud Functions يدرك تلقائيًا محاكي المصادقة. إذا كنت تختبر عمليات التكامل بين وظائف السحابة والمصادقة ، فلن تحتاج إلى إعلان مضيف محاكي المصادقة بهذه الطريقة.

عند الاتصال بمحاكي المصادقة ، ستحتاج إلى تحديد معرّف المشروع. يمكنك تمرير معرف المشروع initializeApp GCLOUD_PROJECT مباشرة أو تعيين متغير البيئة GCLOUD_PROJECT . لاحظ أنك لست بحاجة إلى استخدام معرف مشروع Firebase الحقيقي ؛ سيقبل محاكي المصادقة أي معرف مشروع.

Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" };
متغيرات البيئة
export GCLOUD_PROJECT="your-project-id"

رموز الهوية

لأسباب أمنية ، يقوم محاكي المصادقة بإصدار verifyIdToken معرف غير موقعة والتي يتم قبولها فقط verifyIdToken وإنشاء createSessionCookie من createSessionCookie Admin SDK عند التشغيل داخل محاكي Cloud Functions. عند التشغيل في أي بيئة أخرى ، مثل Cloud Run أو الخادم الخاص بك ، سيتم رفض هذه الرموز المميزة بواسطة Admin SDK.

لبدء النماذج الأولية التفاعلية باستخدام محاكي المصادقة وواجهة مستخدم Emulator Suite ، ابدأ Firebase Local Emulator Suite.

firebase emulators:start

للمصادقة المجهولة ، يمكن لتطبيقك ممارسة منطق تسجيل الدخول لمنصتك ( iOS ، Android ، الويب ).

لمصادقة البريد الإلكتروني / كلمة المرور ، يمكنك البدء في إنشاء النماذج الأولية عن طريق إضافة حسابات مستخدمين إلى محاكي المصادقة من تطبيقك باستخدام أساليب مصادقة SDK ، أو باستخدام واجهة مستخدم Emulator Suite.

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

من خلال إنشاء مستخدم تجريبي ، يمكن لتطبيقك تسجيل دخول المستخدم والخروج منه باستخدام منطق SDK لمنصتك ( iOS ، Android ، الويب ).

لاختبار التحقق من البريد الإلكتروني / تسجيل الدخول باستخدام تدفقات ارتباط البريد الإلكتروني ، يقوم المحاكي بطباعة عنوان URL إلى الجهاز الطرفي الذي تم firebase emulators:start .

i  To verify the email address customer@ex.com, follow this link:
http://localhost: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://localhost:9099/emulator/action?mode=resetPassword&oobCode=XYZ!23&apiKey=fake-api-key&newPassword=YOUR_NEW_PASSWORD

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

بدلاً من استخدام واجهة مستخدم Emulator Suite أو رمز العميل لإدارة حسابات مستخدم البريد الإلكتروني / كلمة المرور ، يمكنك كتابة نصوص إعداد اختبار تستدعي REST APIs لإنشاء حسابات مستخدمين وحذفها وجلب رموز التحقق من البريد الإلكتروني خارج النطاق لملء التحقق من البريد الإلكتروني للمحاكي URL. هذا يبقي النظام الأساسي وكود الاختبار منفصلين ويتيح لك الاختبار غير التفاعلي.

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

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

تمت محاكاة مصادقة الهاتف / الرسائل القصيرة

لمصادقة الهاتف ، لا يدعم محاكي المصادقة:

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

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

استخدام واجهة مستخدم Emulator Suite:

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

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

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

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

التسلسل النموذجي هو على النحو التالي.

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

تمت محاكاة مصادقة موفر هوية الطرف الثالث (IDP)

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

بشكل عام ، يمكنك استخدام Firebase SDK للمصادقة بإحدى طريقتين:

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

مرة أخرى ، تحقق من رابط التوثيق أعلاه وتأكد من أنك على دراية بأي تدفق - إدارة Firebase SDK مقابل استرداد بيانات الاعتماد يدويًا - الذي تريد استخدامه. يدعم محاكي المصادقة اختبار أي من الأسلوبين.

اختبار تدفقات IDP التي تعتمد على Firebase SDK

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

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

يتدفق اختبار IDP مع استرجاع بيانات الاعتماد يدويًا

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

لاحظ أن المحاكي يدعم فقط مصادقة signInWithCredential الاعتماد المستردة من Google Sign-In و Apple signInWithCredential الآخرين الذين يستخدمون رموز ID المميزة المطبقة على شكل JSON Web Tokens (JWT). رموز الوصول (على سبيل المثال تلك التي يوفرها Facebook أو Twitter ، والتي ليست JWTs) غير مدعومة. يناقش القسم التالي بديلًا في هذه الحالات.

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

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

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

  1. إعادة الأسلاك أو التعليق على جزء من الكود الخاص بك الذي يسترد idTokens من IDP ؛ هذا يزيل الحاجة إلى إدخال أسماء مستخدمين وكلمات مرور حقيقية أثناء اختباراتك ، ويخفف اختباراتك من حصص API وحدود المعدل في IDP.
  2. ثانيًا ، استخدم سلسلة JSON حرفية بدلاً من الرمز المميز لـ signInWithCredential . باستخدام web 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') أو أي معرف مزود آخر تريد السخرية منه.

ماذا بعد؟