יצירת משתמש
יש כמה אפשרויות ליצירת משתמש חדש:
מהאפליקציה: יוצרים משתמש חדש בפרויקט Firebase באמצעות קריאה לשיטה
CreateUserWithEmailAndPasswordאו באמצעות כניסה של משתמש בפעם הראשונה דרך ספק זהויות מאוחדות, כמו כניסה באמצעות חשבון Google או כניסה באמצעות פייסבוק.במסוף Firebase: יוצרים משתמש חדש עם אימות באמצעות סיסמה בכרטיסייה Users (משתמשים) בSecurity (אבטחה) > Authentication (אימות) > Users (משתמשים).
קבלת המשתמש שמחובר כרגע
הדרך המומלצת לקבל את המשתמש הנוכחי היא להגדיר listener באובייקט אימות:
Firebase.Auth.FirebaseAuth auth; Firebase.Auth.FirebaseUser user; // Handle initialization of the necessary firebase modules: void InitializeFirebase() { Debug.Log("Setting up Firebase Auth"); auth = Firebase.Auth.FirebaseAuth.DefaultInstance; auth.StateChanged += AuthStateChanged; AuthStateChanged(this, null); } // Track state changes of the auth object. void AuthStateChanged(object sender, System.EventArgs eventArgs) { if (auth.CurrentUser != user) { bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null; if (!signedIn && user != null) { Debug.Log("Signed out " + user.UserId); } user = auth.CurrentUser; if (signedIn) { Debug.Log("Signed in " + user.UserId); } } } // Handle removing subscription and reference to the Auth instance. // Automatically called by a Monobehaviour after Destroy is called on it. void OnDestroy() { auth.StateChanged -= AuthStateChanged; auth = null; }
שימוש ב-listener מבטיח שאובייקט האימות לא יהיה במצב ביניים – כמו מצב אתחול – כשמקבלים את המשתמש הנוכחי.
אפשר גם לקבל את המשתמש שמחובר כרגע על ידי קריאה ל-CurrentUser. אם משתמש לא מחובר לחשבון, הפונקציה CurrentUser תחזיר ערך null. אם משתמש לא מחובר לחשבון, הפונקציה IsValid() תחזיר את הערך false.
שמירת פרטי הכניסה של משתמש
פרטי הכניסה של המשתמש יאוחסנו במאגר המפתחות המקומי אחרי שהמשתמש יתחבר. אפשר למחוק את המטמון המקומי של פרטי הכניסה של המשתמש על ידי הוצאת המשתמש מהחשבון. מאגר המפתחות הוא ספציפי לפלטפורמה:
- פלטפורמות של אפל: Keychain Services.
- Android: Android Keystore.
- Windows: Credential Management API.
- OS X: Keychain Services.
- Linux: libsecret, שהמשתמש צריך להתקין.
קבלת פרופיל של משתמש
כדי לקבל את פרטי הפרופיל של משתמש, משתמשים בשיטות הגישה של מופע של Firebase.Auth.FirebaseUser. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // 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 User.TokenAsync() instead. string uid = user.UserId; }
קבלת מידע ספציפי על פרופיל של משתמש אצל ספק
כדי לקבל את פרטי הפרופיל שאוחזרו מספקי הכניסה שמקושרים למשתמש, משתמשים בשיטה ProviderData. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { foreach (var profile in user.ProviderData) { // Id of the provider (ex: google.com) string providerId = profile.ProviderId; // UID specific to the provider string uid = profile.UserId; // Name, email address, and profile photo Url string name = profile.DisplayName; string email = profile.Email; System.Uri photoUrl = profile.PhotoUrl; } }
עדכון הפרופיל של משתמש
אפשר לעדכן את פרטי הפרופיל הבסיסיים של המשתמש – השם המוצג של המשתמש וכתובת ה-URL של תמונת הפרופיל – באמצעות השיטה UpdateUserProfile. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { Firebase.Auth.UserProfile profile = new Firebase.Auth.UserProfile { DisplayName = "Jane Q. User", PhotoUrl = new System.Uri("https://example.com/jane-q-user/profile.jpg"), }; user.UpdateUserProfileAsync(profile).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UpdateUserProfileAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UpdateUserProfileAsync encountered an error: " + task.Exception); return; } Debug.Log("User profile updated successfully."); }); }
הגדרת כתובת אימייל של משתמש
אפשר להגדיר את כתובת האימייל של המשתמש באמצעות השיטה UpdateEmail. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { user.UpdateEmailAsync("user@example.com").ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UpdateEmailAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UpdateEmailAsync encountered an error: " + task.Exception); return; } Debug.Log("User email updated successfully."); }); }
שליחת הודעת אימות למשתמש
אפשר לשלוח אימייל לאימות כתובת למשתמש באמצעות השיטה SendEmailVerification. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { user.SendEmailVerificationAsync().ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SendEmailVerificationAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SendEmailVerificationAsync encountered an error: " + task.Exception); return; } Debug.Log("Email sent successfully."); }); }
אפשר להתאים אישית את תבנית האימייל שבה נעשה שימוש בכרטיסייה תבניות של אבטחה > אימות במסוף Firebase. תוכלו לעיין במאמר בנושא תבניות אימייל במרכז העזרה של Firebase.
הגדרת סיסמה למשתמש
אפשר להגדיר סיסמה למשתמש באמצעות השיטה UpdatePassword. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; string newPassword = "SOME-SECURE-PASSWORD"; if (user != null) { user.UpdatePasswordAsync(newPassword).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("UpdatePasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("UpdatePasswordAsync encountered an error: " + task.Exception); return; } Debug.Log("Password updated successfully."); }); }
שליחת אימייל לאיפוס הסיסמה
אפשר לשלוח למשתמש אימייל לאיפוס סיסמה באמצעות השיטה SendPasswordResetEmail. לדוגמה:
string emailAddress = "user@example.com"; if (user != null) { auth.SendPasswordResetEmailAsync(emailAddress).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SendPasswordResetEmailAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SendPasswordResetEmailAsync encountered an error: " + task.Exception); return; } Debug.Log("Password reset email sent successfully."); }); }
אפשר להתאים אישית את תבנית האימייל שבה נעשה שימוש בכרטיסייה תבניות של אבטחה > אימות במסוף Firebase. תוכלו לעיין במאמר בנושא תבניות אימייל במרכז העזרה של Firebase.
אפשר גם לשלוח אימיילים לאיפוס סיסמה מFirebaseהמסוף.
מחיקת משתמש
אפשר למחוק חשבון משתמש באמצעות השיטה Delete. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { user.DeleteAsync().ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("DeleteAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("DeleteAsync encountered an error: " + task.Exception); return; } Debug.Log("User deleted successfully."); }); }
אפשר גם למחוק משתמשים במסוף Firebase בכרטיסייה משתמשים שבקטע אבטחה > אימות.
אימות מחדש של משתמש
כדי לבצע פעולות מסוימות שקשורות לאבטחה – כמו מחיקת חשבון, הגדרת כתובת אימייל ראשית ושינוי סיסמה – המשתמש צריך להיכנס לחשבון שלו לאחרונה. אם מבצעים אחת מהפעולות האלה והמשתמש נכנס לחשבון לפני זמן רב מדי, הפעולה נכשלת.
במקרה כזה, צריך לבצע אימות מחדש של המשתמש על ידי קבלת פרטי כניסה חדשים מהמשתמש והעברת הפרטים אל Reauthenticate. לדוגמה:
Firebase.Auth.FirebaseUser user = auth.CurrentUser; // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential("user@example.com", "password1234"); if (user != null) { user.ReauthenticateAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("ReauthenticateAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("ReauthenticateAsync encountered an error: " + task.Exception); return; } Debug.Log("User reauthenticated successfully."); }); }
ייבוא חשבונות משתמשים
אפשר לייבא חשבונות משתמשים מקובץ לפרויקט Firebase באמצעות הפקודה auth:import של Firebase CLI. לדוגמה:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14