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

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

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

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

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

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

  1. ב-Xcode, כשהפרויקט של האפליקציה פתוח, עוברים אל File > Add Packages (קובץ > הוספת חבילות).
  2. כשמוצגת בקשה, מוסיפים את מאגר ה-SDK של Firebase לפלטפורמות של אפל:
  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

ב-app delegate, קודם מייבאים את Firebase SDK:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

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

Swift

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

Objective-C

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

האזנה למצב האימות

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

מצרפים את ה-listener ב-method‏ viewWillAppear של ה-view controller:

Swift

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

Objective-C

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

ולנתק את ה-listener ב-method‏ 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) {
  // ...
}];

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

יוצרים טופס שמאפשר למשתמשים קיימים להיכנס באמצעות כתובת האימייל והסיסמה שלהם. כשמשתמש ממלא את הטופס, קוראים ל-method‏ 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;
  // ...
}

השלבים הבאים

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