אימות באמצעות Firebase באופן אנונימי בפלטפורמות של Apple

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

לפני שמתחילים

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

    1. ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל File > (קובץ >) הוספת חבילות.
    2. כשמופיעה בקשה, מוסיפים את מאגר ה-SDK של מוצרי הפלטפורמה של Firebase של Apple:
    3.   https://github.com/firebase/firebase-ios-sdk.git
    4. בוחרים את הספרייה Firebase Authentication.
    5. מוסיפים את הדגל -ObjC לקטע סימונים של מקשר אחר בהגדרות ה-build של היעד.
    6. בסיום, Xcode יתחיל לפתור את הבעיה ותוריד את של יחסי התלות ברקע.
  2. אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, צריך לעשות זאת דרך מסוף Firebase.
  3. הפעלת אימות אנונימי:
    1. במסוף Firebase, פותחים את הקטע Auth.
    2. בדף שיטות כניסה, מפעילים את האפשרות אנונימית. שיטת כניסה לחשבון.
    3. אופציונלי: אם שדרגתם את הפרויקט ל- Firebase Authentication with Identity Platform, אפשר להפעיל את הניקוי האוטומטי. מתי אם תפעילו את ההגדרה הזו, חשבונות אנונימיים מלפני יותר מ-30 יום יועברו אוטומטית נמחק. בפרויקטים שבהם הפעלתם את הניקוי האוטומטי, אימות אנונימי לא ייספר יותר במסגרת מגבלות השימוש או המכסות לחיוב. צפייה ניקוי אוטומטי.

אימות עם Firebase באופן אנונימי

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

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

    SwiftUI

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

    Swift

    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()

    Swift

    // 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. קוראים לשיטה signInAnonymouslyWithCompletion::

    Swift

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
  5. אם שיטת signInAnonymouslyWithCompletion: משלימה ללא שגיאה, אפשר לקבל את נתוני החשבון של המשתמש האנונימי אובייקט FIRAuthDataResult:

    Swift

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid

    Objective-C

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;

המרה של חשבון אנונימי לחשבון קבוע

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

  1. כשהמשתמש נרשם, משלימים את תהליך הכניסה לחשבון ספק אימות עד, אך לא כולל, התקשרות לאחד FIRAuth.signInWith אמצעי תשלום. לדוגמה, משיגים את האסימון המזהה של המשתמש ב-Google, אסימון גישה של Facebook, או כתובת אימייל וסיסמה.
  2. מקבלים FIRAuthCredential עבור ספק האימות החדש:

    כניסה באמצעות חשבון Google
    Swift
    guard
      let authentication = user?.authentication,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: idToken,
                                                   accessToken: authentication.accessToken)
    Objective-C
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString
                                     accessToken:result.user.accessToken.tokenString];
    התחברות ל-Facebook
    Swift
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    כניסה באמצעות סיסמה לאימייל
    Swift
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
  3. מעבירים את האובייקט FIRAuthCredential אל של המשתמש שמבצע את הכניסה linkWithCredential:completion: method:

    Swift
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    Objective-C
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];

אם הקריאה אל linkWithCredential:completion: תתבצע בהצלחה, החשבון החדש של המשתמש יוכל לגשת לנתוני Firebase של החשבון האנונימי.

ניקוי אוטומטי

אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, תוכלו: להפעיל ניקוי אוטומטי במסוף Firebase. כשמפעילים את התכונה הזו, מאפשרים Firebase ימחק באופן אוטומטי חשבונות אנונימיים מלפני יותר מ-30 יום. בפרויקטים עם הגדרת אוטומטי הניקוי מופעל, אימות אנונימי לא ייחשב כחלק ממגבלות השימוש או במכסות החיוב.

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

אם אתם רוצים לראות כמה משתמשים יושפעו לפני שתפעילו את התכונה הזו, שדרג את הפרויקט ל-Firebase Authentication with Identity Platform, אפשר לסנן לפי is_anon ב-Cloud רישום ביומן.

השלבים הבאים

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