תחילת העבודה עם אימות ב-Firebase בפלטפורמות של Apple

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

קישור האפליקציה ל-Firebase

  1. מתקינים את Firebase SDK.
  2. במסוף Firebase, מוסיפים את האפליקציה לפרויקט Firebase.

הוספת Firebase Authentication לאפליקציה

שימוש ב-Swift Package Manager כדי להתקין ולנהל יחסי תלות ב-Firebase.

  1. ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל קובץ > הוספת חבילות.
  2. כשמופיעה בקשה, מוסיפים את המאגר של Firebase SDK לפלטפורמות Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. בוחרים את הספרייה Firebase Authentication.
  5. מוסיפים את הדגל -ObjC לקטע Other Linker Flags (דגלים אחרים של קישור) בהגדרות ה-build של היעד.
  6. בסיום, Xcode יתחיל לפתור את יחסי התלות ולהוריד אותם באופן אוטומטי ברקע.

(אופציונלי) יצירת אב טיפוס ובדיקה באמצעות Firebase Local Emulator Suite

לפני שנדבר על האופן שבו האפליקציה מאמתת משתמשים, נציג קבוצה של כלים שאפשר להשתמש בהם כדי ליצור אב טיפוס ולבדוק את הפונקציונליות של Authentication: Firebase Local Emulator Suite. אם אתם בוחרים בין שיטות אימות וספקים, מנסים מודלים שונים של נתונים עם נתונים ציבוריים ופרטיים באמצעות Authentication ו-Firebase Security Rules, או יוצרים אב טיפוס של עיצובים של ממשקי משתמש לכניסה, יכול להיות שעבודה מקומית בלי לפרוס שירותים פעילים תהיה רעיון מצוין.

אמולטור של Authentication הוא חלק מ-Local Emulator Suite, שמאפשר לאפליקציה שלכם לקיים אינטראקציה עם תוכן והגדרות של מסדי נתונים מועתקים, וגם עם משאבי הפרויקט המועתקים (פונקציות, מסדי נתונים אחרים וכללי אבטחה).

כדי להשתמש במהדמ של Authentication, צריך לבצע כמה שלבים פשוטים:

  1. הוספת שורת קוד להגדרות הבדיקה של האפליקציה כדי להתחבר למהדר.
  2. מריצים את firebase emulators:start ברמה הבסיסית של ספריית הפרויקט המקומית.
  3. באמצעות ממשק המשתמש של Local Emulator Suite ליצירת אב טיפוס אינטראקטיבי, או באמצעות ה-API ל-REST של המהדר Authentication לבדיקה לא אינטראקטיבית.

מדריך מפורט זמין במאמר חיבור האפליקציה לאמולטור Authentication. מידע נוסף זמין במבוא ל-Local Emulator Suite.

עכשיו נמשיך להסביר איך מאמתים משתמשים.

אתחול של Firebase SDK

קודם כול, מייבאים את Firebase SDK במתווך האפליקציה:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

לאחר מכן, בשיטה application:didFinishLaunchingWithOptions:, מאתחלים את האובייקט FirebaseApp:

Swift

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

האזנה לסטטוס האימות

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

מחברים את המאזין בשיטה viewWillAppear של ה-View Controller:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

ומשחררים את המאזין בשיטה viewWillDisappear של ה-View Controller:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

הרשמה של משתמשים חדשים

יוצרים טופס שמאפשר למשתמשים חדשים להירשם לאפליקציה באמצעות כתובת האימייל והסיסמה שלהם. כשמשתמש ממלא את הטופס, מאמתים את כתובת האימייל והסיסמה שהמשתמש סיפק, ומעבירים אותם ל-method‏ createUser:

Swift

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Objective-C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

כניסה של משתמשים קיימים

יוצרים טופס שמאפשר למשתמשים קיימים להיכנס באמצעות כתובת האימייל והסיסמה שלהם. כשמשתמש ממלא את הטופס, צריך להפעיל את השיטה signIn:

Swift

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Objective-C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

אחזור פרטי משתמשים

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

Swift

if let user = user {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  let uid = user.uid
  let email = user.email
  let photoURL = user.photoURL
  var multiFactorString = "MultiFactor: "
  for info in user.multiFactor.enrolledFactors {
    multiFactorString += info.displayName ?? "[DispayName]"
    multiFactorString += " "
  }
  // ...
}

Objective-C

if (user) {
  // The user's ID, unique to the Firebase project.
  // Do NOT use this value to authenticate with your backend server,
  // if you have one. Use getTokenWithCompletion:completion: instead.
  NSString *email = user.email;
  NSString *uid = user.uid;
  NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
  for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
    [multiFactorString appendString:info.displayName];
    [multiFactorString appendString:@" "];
  }
  NSURL *photoURL = user.photoURL;
  // ...
}

השלבים הבאים

איך מוסיפים תמיכה בספקי זהויות אחרים ובחשבונות אורחים אנונימיים: