בצע אימות עם Firebase באמצעות חשבונות מבוססי סיסמה בפלטפורמות של Apple

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

לפני שאתה מתחיל

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

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

לאחר מכן, בצע כמה שלבי תצורה:

  1. אם עדיין לא חיברת את האפליקציה שלך לפרויקט Firebase שלך, עשה זאת ממסוף Firebase .
  2. אפשר כניסה לאימייל/סיסמה:
    1. במסוף Firebase , פתח את הקטע Auth .
    2. בכרטיסייה שיטת כניסה , הפעל את שיטת הכניסה לדוא"ל/סיסמה ולחץ על שמור .

צור חשבון מבוסס סיסמה

כדי ליצור חשבון משתמש חדש עם סיסמה, בצע את השלבים הבאים בפעילות הכניסה של האפליקציה שלך:

  1. ייבא את מודול FirebaseCore ב- UIApplicationDelegate שלך, כמו גם כל מודולי Firebase אחרים שנציג האפליקציה שלך משתמש בו. לדוגמה, כדי להשתמש ב-Cloud Firestore ובאימות:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    מָהִיר

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. הגדר מופע משותף FirebaseApp בשיטת application(_:didFinishLaunchingWithOptions:) של נציג האפליקציה שלך:

    SwiftUI

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

    מָהִיר

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. אם אתה משתמש ב- SwiftUI, עליך ליצור נציג יישום ולצרף אותו למבנה App שלך באמצעות UIApplicationDelegateAdaptor או NSApplicationDelegateAdaptor . עליך גם להשבית את העברת נציגי האפליקציה. למידע נוסף, עיין בהוראות של SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. כאשר משתמש חדש נרשם באמצעות טופס ההרשמה של האפליקציה שלך, השלם את כל שלבי אימות החשבון החדשים שהאפליקציה שלך דורשת, כגון אימות שהסיסמה של החשבון החדש הוקלדה כהלכה ועומדת בדרישות המורכבות שלך.
  5. צור חשבון חדש על ידי העברת כתובת הדוא"ל והסיסמה של המשתמש החדש ל- createUser .

    מָהִיר

    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) {
      // ...
    }];
    אם החשבון החדש נוצר בהצלחה, המשתמש מחובר, ותוכל לקבל את נתוני החשבון של המשתמש מאובייקט התוצאה שהועבר לשיטת ההתקשרות חזרה.

היכנס למשתמש עם כתובת דוא"ל וסיסמה

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

  1. ייבא את מודול FirebaseCore ב- UIApplicationDelegate שלך, כמו גם כל מודולי Firebase אחרים שנציג האפליקציה שלך משתמש בו. לדוגמה, כדי להשתמש ב-Cloud Firestore ובאימות:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    מָהִיר

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. הגדר מופע משותף FirebaseApp בשיטת application(_:didFinishLaunchingWithOptions:) של נציג האפליקציה שלך:

    SwiftUI

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

    מָהִיר

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. אם אתה משתמש ב- SwiftUI, עליך ליצור נציג יישום ולצרף אותו למבנה App שלך באמצעות UIApplicationDelegateAdaptor או NSApplicationDelegateAdaptor . עליך גם להשבית את העברת נציגי האפליקציה. למידע נוסף, עיין בהוראות של SwiftUI .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. כאשר משתמש נכנס לאפליקציה שלך, העבר את כתובת האימייל והסיסמה של המשתמש כדי signIn .

    מָהִיר

    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) {
      // ...
    }];
    אם המשתמש נכנס בהצלחה, תוכל לקבל את נתוני החשבון של המשתמש מאובייקט התוצאה שהועבר לשיטת ההתקשרות חזרה.

מומלץ: הפעל הגנה על ספירת דוא"ל

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

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

הצעדים הבאים

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

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

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

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

כדי לצאת ממשתמש, התקשר ל- signOut: .

מָהִיר

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}

Objective-C

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

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