אתם יכולים להשתמש ב-Firebase Authentication כדי ליצור חשבונות אנונימיים זמניים ולהשתמש בהם לאימות ב-Firebase. החשבונות האנונימיים הזמניים האלה מאפשרים למשתמשים שעדיין לא נרשמו לאפליקציה לעבוד עם נתונים שמוגנים על ידי כללי אבטחה. אם משתמש לא רשום מחליט להירשם לאפליקציה, אתם יכולים לקשר את פרטי הכניסה שלו לחשבון האנונימי כדי שהוא יוכל להמשיך לעבוד עם הנתונים המוגנים שלו בחיבורים עתידיים.
לפני שמתחילים
-
משתמשים ב-Swift Package Manager כדי להתקין ולנהל את יחסי התלות של Firebase.
- ב-Xcode, כשהפרויקט של האפליקציה פתוח, עוברים אל File > Add Packages (קובץ > הוספת חבילות).
- כשמוצגת בקשה, מוסיפים את מאגר ה-SDK של Firebase לפלטפורמות של אפל:
- בוחרים בספרייה Firebase Authentication.
- מוסיפים את הדגל
-ObjCלקטע Other Linker Flags (דגלים אחרים של מקשרים) בהגדרות ה-build של היעד. - אחרי שתסיימו, פלטפורמת Xcode תתחיל לטפל ביחסי התלות ולהוריד אותם באופן אוטומטי ברקע.
https://github.com/firebase/firebase-ios-sdk.git
- אם עדיין לא קישרתם את האפליקציה לפרויקט ב-Firebase, אתם צריכים לעשות את זה דרך מסוף Firebase.
-
מפעילים אימות אנונימי:
- במסוף Firebase, נכנסים אל אבטחה > אימות.
- בכרטיסייה שיטת כניסה לחשבון, מפעילים את ספק הכניסה Anonymous.
- אופציונלי: אם שדרגתם את הפרויקט ל-Firebase Authentication with Identity Platform, אתם יכולים להפעיל ניקוי אוטומטי. כשמפעילים את ההגדרה הזו, חשבונות אנונימיים שנוצרו לפני יותר מ-30 ימים נמחקים באופן אוטומטי. בפרויקטים שבהם מופעל ניקוי אוטומטי, אימות אנונימי לא ייכלל יותר במגבלות השימוש או במכסות החיוב. מידע נוסף זמין בקטע ניקוי אוטומטי.
אימות אנונימי באמצעות Firebase
כשמשתמש שלא מחובר לחשבון משתמש בתכונה באפליקציה שדורשת אימות באמצעות Firebase, צריך להכניס את המשתמש באופן אנונימי על ידי ביצוע השלבים הבאים:
- מייבאים את המודול
FirebaseCoreבקובץUIApplicationDelegate, וגם כל מודול Firebase אחר שבו משתמש ה-app delegate. לדוגמה, כדי להשתמש ב-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; // ...
- מגדירים מופע משותף של
FirebaseAppב-methodapplication(_: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];
- אם אתם משתמשים ב-SwiftUI, אתם צריכים ליצור נציג של האפליקציה ולצרף אותו ל-struct של
AppבאמצעותUIApplicationDelegateAdaptorאוNSApplicationDelegateAdaptor. צריך גם להשבית את ה-swizzling של ה-app delegate. מידע נוסף זמין בהוראות של SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- מבצעים קריאה ל-
signInAnonymouslyWithCompletion::Swift
Auth.auth().signInAnonymously { authResult, error in // ... }
Objective-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- אם השיטה
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;
איך ממירים חשבון אנונימי לחשבון קבוע
כשמשתמש לא רשום נרשם לאפליקציה, יכול להיות שתרצו לאפשר לו להמשיך את העבודה שלו עם החשבון החדש. לדוגמה, יכול להיות שתרצו שהפריטים שהמשתמש הוסיף לעגלת הקניות לפני שנרשם יהיו זמינים בעגלת הקניות של החשבון החדש. כדי לעשות את זה:
- כשהמשתמש נרשם, משלימים את תהליך הכניסה של ספק האימות של המשתמש עד לשלב שבו קוראים לאחת מהשיטות של
FIRAuth.signInWith, אבל לא כולל את השלב הזה. לדוגמה, קבלת טוקן של מזהה Google של המשתמש, טוקן גישה לפייסבוק או כתובת אימייל וסיסמה. מקבלים
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];
התחברות לפייסבוק
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];
מעבירים את האובייקט
FIRAuthCredentialל-methodlinkWithCredential:completion:של המשתמש שמחובר לחשבון: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 Logging.
השלבים הבאים
עכשיו, כשהמשתמשים יכולים לבצע אימות באמצעות Firebase, אתם יכולים לשלוט בגישה שלהם לנתונים במסד הנתונים של Firebase באמצעות כללי Firebase.