אפשר להשתמש ב-Firebase Authentication כדי ליצור חשבונות אנונימיים זמניים ולהשתמש בהם לאימות באמצעות Firebase. אפשר להשתמש בחשבונות האנונימיים הזמניים האלה כדי לאפשר למשתמשים שעדיין לא נרשמו לאפליקציה שלכם לעבוד עם נתונים שמוגנים על ידי כללי אבטחה. אם משתמש אנונימי מחליט להירשם לאפליקציה, תוכלו לקשר את פרטי הכניסה שלו לחשבון האנונימי כדי שהוא יוכל להמשיך לעבוד עם הנתונים המוגנים שלו בסשנים עתידיים.
לפני שמתחילים
-
שימוש ב-Swift Package Manager כדי להתקין ולנהל יחסי תלות ב-Firebase.
- ב-Xcode, כשפרויקט האפליקציה פתוח, עוברים אל קובץ > הוספת חבילות.
- כשמופיעה בקשה, מוסיפים את המאגר של Firebase SDK לפלטפורמות של Apple:
- בוחרים את הספרייה Firebase Authentication.
- מוסיפים את הדגל
-ObjC
לקטע Other Linker Flags (דגלים אחרים של קישור) בהגדרות ה-build של היעד. - בסיום, Xcode יתחיל לפתור את יחסי התלות ולהוריד אותם באופן אוטומטי ברקע.
https://github.com/firebase/firebase-ios-sdk.git
- אם עדיין לא קישרתם את האפליקציה לפרויקט Firebase, תוכלו לעשות זאת דרך מסוף Firebase.
- מפעילים את האימות האנונימי:
- במסוף Firebase, פותחים את הקטע Auth.
- בדף Sign-in Methods מפעילים את שיטת הכניסה Anonymous.
- אופציונלי: אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, תוכלו להפעיל ניקוי אוטומטי. כשמפעילים את ההגדרה הזו, חשבונות אנונימיים שנוצרו לפני יותר מ-30 יום נמחקים באופן אוטומטי. בפרויקטים שבהם הפעלתם את הניקוי האוטומטי, אימות אנונימי לא ייספר יותר במסגרת מגבלות השימוש או המכסות לחיוב. ניקוי אוטומטי
אימות אנונימי ב-Firebase
כשמשתמש לא מחובר משתמש בתכונה באפליקציה שדורשת אימות באמצעות Firebase, צריך להכניס את המשתמש באופן אנונימי. לשם כך, מבצעים את השלבים הבאים:
- מייבאים את המודול
FirebaseCore
ב-UIApplicationDelegate
, וגם את כל המודולים האחרים של Firebase שבהם משתמש הנציג של האפליקציה. לדוגמה, כדי להשתמש ב-Cloud Firestore וב-Authentication:import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- מגדירים מופע משותף של
FirebaseApp
בשיטהapplication(_:didFinishLaunchingWithOptions:)
של הנציג של האפליקציה:// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs [FIRApp configure];
- אם אתם משתמשים ב-SwiftUI, עליכם ליצור נציג אפליקציה ולצרף אותו למבנה
App
דרךUIApplicationDelegateAdaptor
אוNSApplicationDelegateAdaptor
. צריך גם להשבית את החלפת הקוד של נציג האפליקציה. מידע נוסף זמין בהוראות ל-SwiftUI.@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- קוראים לשיטה
signInAnonymouslyWithCompletion:
:Auth.auth().signInAnonymously { authResult, error in // ... }
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- אם השיטה
signInAnonymouslyWithCompletion:
מסתיימת ללא שגיאה, אפשר לקבל את נתוני החשבון של המשתמש האנונימי מהאובייקטFIRAuthDataResult
:guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
המרת חשבון אנונימי לחשבון קבוע
כשמשתמש אנונימי נרשם לאפליקציה, כדאי לאפשר לו להמשיך לעבוד עם החשבון החדש שלו. לדוגמה, כדאי להפוך את הפריטים שהמשתמש הוסיף לעגלת הקניות לפני ההרשמה לזמינים בעגלת הקניות של החשבון החדש. כדי לעשות זאת, מבצעים את השלבים הבאים:
- כשהמשתמש נרשם, צריך להשלים את תהליך הכניסה של ספק האימות של המשתמש, עד לקריאה לאחת מהשיטות של
FIRAuth.signInWith
, אבל לא כולל אותה. לדוגמה, אפשר לקבל את אסימון מזהה Google, אסימון הגישה ל-Facebook או את כתובת האימייל והסיסמה של המשתמש. מקבלים
FIRAuthCredential
עבור ספק האימות החדש:כניסה באמצעות חשבון Google
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
התחברות באמצעות חשבון Facebook
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
כניסה באמצעות כתובת אימייל וסיסמה
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
מעבירים את האובייקט
FIRAuthCredential
לשיטהlinkWithCredential:completion:
של משתמש הכניסה:user.link(with: credential) { authResult, error in // ... } }
[[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 Logging.
השלבים הבאים
עכשיו, כשהמשתמשים יכולים לבצע אימות באמצעות Firebase, תוכלו לשלוט בגישה שלהם לנתונים במסד הנתונים של Firebase באמצעות כללי Firebase.