חבר את האפליקציה שלך לאמולטור האימות

לפני השימוש האמולטור האימות איתך אפליקציה, לוודא שאתה מבין את עבודת Suite Emulator הכוללת Firebase המקומי , ושאתם להתקין ולהגדיר חבילת Emulator המקומית ולסקור שלה פקוד CLI .

מה אני יכול לעשות עם אמולטור האימות?

אמולטור האימות מספק אמולציה מקומי ברמת אמינות הגבוהה של שירותי אימות Firebase, מתן הפונקציונלי רב שנמצאו ייצור Firebase אימות . האמולטור מאפשר לך:

  • צור, עדכן ונהל חשבונות משתמשים חיקויים לבדיקת דוא"ל/סיסמה, מספר טלפון/SMS וכניסה עם ספקי זהויות של צד שלישי (כגון Google)
  • הצג וערוך משתמשים שחיקו אותם
  • בדוק הודעות הקשורות לאימות בכרטיסייה יומני ממשק משתמש של אמולטור.

בחר פרויקט Firebase

חבילת האמולטור המקומית של Firebase מחקה מוצרים לפרויקט Firebase יחיד.

כדי לבחור את הפרויקט להשתמש, לפני שתתחיל אמולטורים, ב CLI בטווח firebase use בספרייה עובד שלך. לחלופין, אתה יכול להעביר את --project דגל לכל פקודה אמולטור.

המקומי Emulator Suite תומך אמולציה של פרויקטים אמיתיים Firebase ופרויקטי ההדגמה.

סוג הפרויקט מאפיינים השתמש עם אמולטורים
אמיתי

פרויקט Firebase אמיתי הוא פרויקט שיצרת והגדרת (סביר להניח דרך מסוף Firebase).

לפרויקטים אמיתיים יש משאבים חיים, כמו מופעי מסדי נתונים, דליים לאחסון, פונקציות או כל משאב אחר שהגדרת עבור אותו פרויקט Firebase.

בעת עבודה עם פרויקטים אמיתיים של Firebase, תוכל להריץ אמולטורים לכל המוצרים הנתמכים או כולם.

עבור כול מוצרים אינכם מחקתם, אפליקציות הקוד שלך תהיינה אינטראקציה עם המשאב החי (למשל מסד נתונים, דלי אחסון, פונקציה, וכו ').

הַדגָמָה

פרויקט הדגמת Firebase אין תצורת Firebase אמיתית ואין משאבים חיים. בדרך כלל ניגשים לפרויקטים אלה באמצעות codelabs או הדרכות אחרות.

פרויקט תעודות זהות לפרויקטי הדגמה יש demo- הקידומת.

כאשר עובדים עם הדגמת פרויקטים Firebase, האפליקציות שלך ולתקשר קוד עם אמולטורים בלבד. אם האפליקציה שלך מנסה ליצור אינטראקציה עם משאב שעבורו לא פועל אמולטור, הקוד הזה ייכשל.

אנו ממליצים לך להשתמש בפרויקטים הדגמה בכל מקום אפשרי. ההטבות כוללות:

  • התקנה קלה יותר מכיוון שאתה יכול להריץ את האמולטורים מבלי ליצור פרויקט Firebase
  • בטיחות חזקה יותר, מכיוון שאם הקוד שלך גורם בטעות למשאבים (ייצור) שאינם חיקויים, אין סיכוי לשינוי נתונים, שימוש וחיוב
  • תמיכה לא מקוונת טובה יותר, מכיוון שאין צורך לגשת לאינטרנט כדי להוריד את תצורת ה- SDK שלך.

השתמש באפליקציה שלך כדי לדבר עם אמולטור האימות

Android, iOS ו- SDKs באינטרנט

הגדר את תצורת האפליקציה שלך או את שיעורי הבדיקה כדי ליצור אינטראקציה עם אמולטור האימות כדלקמן.

דְמוּי אָדָם
FirebaseAuth.getInstance().useEmulator('10.0.2.2', 9099);
iOS - סוויפט
Auth.auth().useEmulator(withHost:"localhost", port:9099)

גרסת אינטרנט 9

import { getAuth, connectAuthEmulator } from "firebase/auth";

const auth = getAuth();
connectAuthEmulator(auth, "http://localhost:9099");

גרסת אינטרנט 8

const auth = firebase.auth();
auth.useEmulator("http://localhost:9099");

אין צורך בהתקנה נוספת לאב -טיפוס ובדיקת אינטראקציות בין אימות ופונקציות ענן או כללי אבטחה של Firebase עבור Cloud Firestore או מסד נתונים בזמן אמת. כאשר אמולטור האימות מוגדר ומאמולטורים אחרים פועלים, הם פועלים יחד באופן אוטומטי.

מנהל SDK

ה- SDK Admin Firebase מתחבר באופן אוטומטי האמולטור האימות כאשר FIREBASE_AUTH_EMULATOR_HOST מוגדר משתנה הסביבה.

export FIREBASE_AUTH_EMULATOR_HOST="localhost:9099"

שים לב שאמולטור פונקציות הענן מודע באופן אוטומטי לאמולטור האימות, כך שתוכל לדלג על שלב זה בעת בדיקת אינטגרציות בין פונקציות ענן ומאמצי אימות. משתנה הסביבה יוגדר אוטומטית עבור ה- SDK של מנהל המערכת בפונקציות ענן.

עם הסט משתנה הסביבה, SDK Admin Firebase יקבל עוגיות מזהים אסימונים ו מושב חתום שהוציאו אמולטור האימות (באמצעות verifyIdToken ו createSessionCookie שיטות בהתאמה) כדי להקל developmemt ובדיקה מקומיים. אנא ודא שלא להגדיר את משתנה הסביבה בייצור.

בעת התחברות לאמולטור האימות, יהיה עליך לציין מזהה פרוייקט. אתה יכול לעבור מזהה פרויקט initializeApp ישירות או להגדיר את GCLOUD_PROJECT משתנה הסביבה. שים לב שאינך צריך להשתמש במזהה הפרויקט האמיתי שלך ב- Firebase; אמולטור האימות יקבל כל מזהה פרוייקט.

Node.js מנהל SDK
admin.initializeApp({ projectId: "your-project-id" });
משתנה הסביבה
export GCLOUD_PROJECT="your-project-id"

אסימוני זיהוי

מטעמי אבטחה, אימות אמולטור סוגיות אסימונים מזהה חתום, אשר מתקבלים רק על ידי אמולטורים Firebase אחרים, או SDK של מנהל המערכת Firebase כאשר מוגדר . אסימונים אלה יידחו על ידי שירותי ייצור Firebase או SDK מנהל מערכת Firebase הפועלים במצב ייצור (למשל התנהגות ברירת המחדל ללא שלבי ההתקנה המתוארים לעיל).

כדי להתחיל אב טיפוס אינטראקטיבי באמצעות אמולטור האימות וממשק המשתמש של אמולטור סוויט, הפעל את חבילת Emulator Local Firebase.

firebase emulators:start

עבור אימות אנונימי, האפליקציה שלך יכולה לממש את כניסת היגיון לפלטפורמה שלך ( iOS , Android , אינטרנט ).

עבור אימות דוא"ל / סיסמה, אתה יכול להתחיל שטנץ ידי הוספת חשבונות משתמשים האמולטור אימות מהאפליקציה באמצעות שיטות SDK אימות, או באמצעות ממשק משתמש Suite Emulator.

  1. בממשק משתמש Suite Emulator, לחץ על כרטיסיית האימות.
  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 או בקוד לקוח לניהול חשבונות משתמש בדוא"ל/סיסמה, תוכל לכתוב סקריפטים להתקנת בדיקה שקוראים לממשקי API של REST ליצור ולמחוק חשבונות משתמשים ולשלוף קודי אימות דוא"ל מחוץ להקה כדי לאכלס את אימות הדוא"ל של האמולטור. כתובת URL. זה שומר את קוד הפלטפורמה והבדיקה בנפרד ומאפשר לך לבדוק לא אינטראקטיבי.

עבור זרימות בדיקת דוא"ל וסיסמא שאינן אינטראקטיביות, הרצף האופייני הוא כדלקמן.

  1. צור משתמשים עם אימות קצה ההרשמה REST .
  2. היכנס למשתמשים באמצעות האימיילים והסיסמאות לביצוע בדיקות.
  3. אם ישי הבדיקות שלך, להביא זמין מחוץ ללהקת קודי אימות הדוא"ל מן endpont REST אמולטור הספציפי .
  4. רשומות המשתמשים Flush עם קצה REST אמולטור ספציפי עבור נתוני הסליקה.

אימות טלפון/SMS מחקה

לאימות טלפוני, אמולטור האימות אינו תומך:

  • זרימות reCAPTCHA ו- APN. ברגע מוגדר אינטראקציה עם אמולטור, SDK לקוח להשבית שיטות אימות אלה בדרך דומה לזו המתוארת לבדיקות אינטגרציה ( iOS , Android , אינטרנט ).
  • בדוק את מספרי הטלפון עם קודים שהוגדרו מראש במסוף Firebase.

אחרת, מבחינת קוד לקוח, זרימת אימות טלפון / SMS זהה לזה שתואר לייצור ( iOS , Android , אינטרנט ).

שימוש בממשק המשתמש של Emulator Suite:

  1. בממשק משתמש Suite Emulator, לחץ על כרטיסיית האימות.
  2. לחץ על לחצן הוסף משתמש.
  3. עקוב אחר אשף יצירת חשבון המשתמש ומלא את שדות אימות הטלפון.

עם זאת, עבור זרימות אימות טלפונים, האמולטור לא יפעיל משלוח של הודעות טקסט כלשהן, שכן פנייה לספק היא מחוץ לתחום ואינה ידידותית לבדיקות מקומיות! במקום זאת, הדפסים אמולטור את הקוד היה נשלח באמצעות SMS לאותו הטרמינל שבו אתה רץ firebase emulators:start ; הזן קוד זה לאפליקציה כדי לדמות משתמשים שבודקים את הודעות הטקסט שלהם.

בדיקות לא אינטראקטיביות

לבדיקת אימות טלפונים שאינם אינטראקטיביים, השתמש בממשק ה- API של REST API של אמולטור האימות כדי לאחזר קודי SMS זמינים. שים לב שהקוד שונה בכל פעם שאתה מתחיל את הזרימה.

הרצף האופייני הוא כדלקמן.

  1. התקשר פלטפורמת signInWithPhoneNumber כדי להתחיל את תהליך האימות.
  2. קבל את קוד האימות באמצעות נקודות קצה REST אמולטור ספציפי .
  3. שיחה confirmationResult.confirm(code) כרגיל עם קוד אימות.

אימות ספק זהות של צד שלישי (IDP)

אמולטור האימות מאפשר לך לבדוק זרימות אימות רבות של צד שלישי באפליקציות iOS, Android או אינטרנט ללא שינויים בקוד הייצור. לדוגמה של תזרימי אימות, להתייעץ בתיעוד שונה שילובים של ספקי פלטפורמות אתה יכול להשתמש באפליקציה .

באופן כללי, אתה יכול להשתמש ב- Firebase SDK לאימות באחת משתי דרכים:

  • האפליקציה שלך מאפשרת ל- SDK לטפל בכל התהליך מקצה לקצה, כולל כל האינטראקציות עם ספקי מזהי צד שלישי בכדי לאחזר אישורים.
  • האפליקציה שלך מאחזרת את האישורים באופן ידני מספק צד שלישי באמצעות ה- SDK של אותו צד ומעבירה את האישורים האלה ל- SDK האימות.

שוב, בדוק את קישור התיעוד למעלה וודא שאתה מכיר את הזרם - אחזור אישורים מנוהל על ידי Firebase SDK לעומת אחזור אישורים ידני - שברצונך להשתמש בו. אמולטור האימות תומך בבדיקת כל אחת מהגישה.

בדיקת זרימות IDP מונחות Firebase SDK

אם האפליקציה משתמשת בשום זרימת מקצה לקצה SDK Firebase, כמו OAuthProvider עבור הכניסה עם מיקרוסופט, GitHub, או יאהו, לבדיקה אינטראקטיבי, האמולטור אימות מגיש גרסה מקומית של הכניסה המתאים בדף כדי לעזור לך לבחון אימות מן יישומי אינטרנט בכל שיחה כי signinWithPopup או signInWithRedirect השיטה. דף כניסה זה המוגש באופן מקומי מופיע גם באפליקציות לנייד, המוצגות על ידי ספריית תצוגת האינטרנט של הפלטפורמה שלך.

האמולטור יוצר חשבונות משתמש ותעודות משתמש מדויקים לפי הצורך ככל שהזרימות נמשכות.

בדיקת זרימות מזהה עם שליפת אישורים ידנית

אם אתה משתמש "ידנית" כניסת טכניקות ולקרוא הפלטפורמה שלך signInWithCredentials שיטה, אז, כרגיל, האפליקציה שלך תבקש כניסה של צד שלישי אמיתית ולאחזר אישורי הצד שלישי אמיתיים.

הערה כי אמולטור תומך רק signInWithCredential אימות עבור אישורי מאוחזר כניסה ל- Google, Apple, וספקים אחרים מזהה שימוש אסימונים מיושמים כמו JSON Web אסימונים (JWTs). אסימוני גישה (למשל אלה שמספקים פייסבוק או טוויטר, שאינם JWT) אינם נתמכים. החלק הבא דן באלטרנטיבה במקרים אלה.

בדיקות לא אינטראקטיביות

אחת הגישות לבדיקות לא אינטראקטיביות היא אוטומציה של קליקים של משתמשים על דף הכניסה שהאמולטור משרת. עבור יישומי אינטרנט, השתמש בממשק שליטה כמו WebDriver. לנייד, השתמש בכלי בדיקת ממשק המשתמש מהפלטפורמה שלך, כמו אספרסו או Xcode.

לחלופין, אתה יכול לעדכן את הקוד שלך להשתמש signInWithCredential (למשל סניף קוד) ולהשתמש זרימת אימות אסימון עם אסימונים מזהים מדומים עבור חשבונות במקום אישורים אמיתיים.

  1. העבר מחדש או פרסם את החלק של הקוד שלך שאוחזר idTokens מה- IDP; זה מסיר את הצורך להזין שמות משתמש וסיסמאות אמיתיים במהלך הבדיקות שלך, ומקל את הבדיקות שלך ממכסות API ומגבלות תעריפים ב- IDP.
  2. שנית, להשתמש בחוט JSON מילולי במקום של אסימון עבור signInWithCredential . באמצעות דוגמא ל- SDK האינטרנט, תוכל לשנות את הקוד ל:
firebase.auth().signInWithCredential(firebase.auth.GoogleAuthProvider.credential(
  '{"sub": "abc123", "email": "foo@example.com", "email_verified": true}'
));

כאשר בשימוש עם אמולטור, קוד זה יהיה בהצלחה לאימות משתמש עם הדוא"ל foo@example.com בגוגל. תחשוב על שדה המשנה כמפתח ראשי, שניתן לשנותו לכל מחרוזת, מה שמזלזל בכניסה למשתמשים שונים. אתה יכול להחליף firebase.auth.GoogleAuthProvider עם, למשל, new firebase.auth.OAuthProvider('yahoo.com') או כל מזהה ספק אחר שאתה רוצה ללעוג.

מה הלאה?