אפשר לאפשר למשתמשים להיכנס לאפליקציה באמצעות מספר סוגי אימות על ידי קישור פרטי הכניסה של ספק האימות לחשבון משתמש קיים. אפשר לזהות משתמשים לפי אותו מזהה משתמש ב-Firebase, ללא קשר לספק האימות שבו הם השתמשו כדי להיכנס לחשבון. לדוגמה, משתמש שנכנס לחשבון עם סיסמה יכולים לקשר חשבון Google ולהיכנס בכל אחת מהשיטות העתידי. לחלופין, משתמש אנונימי יכול לקשר חשבון Facebook, ולאחר מכן להיכנס לחשבון מחובר ל-Facebook כדי להמשיך להשתמש באפליקציה שלך.
לפני שמתחילים
הוספת תמיכה לשני ספקי אימות או יותר (כולל תמיכה ב- לאימות אנונימי) באפליקציה.
קישור פרטי הכניסה של ספק האימות לחשבון משתמש
כדי לקשר פרטי כניסה של ספק אימות לחשבון משתמש קיים:
מזינים את פרטי הכניסה של המשתמש באמצעות כל ספק או שיטה של אימות.
להשלים את תהליך הכניסה עבור ספק האימות החדש עד, אבל לא כולל, קריאה לאחת מהשיטות
signInWith
. לדוגמה, לקבל את אסימון מזהה Google, אסימון הגישה ל-Facebook או את האימייל והסיסמה של המשתמש.מקבלים אובייקט
Credential
של ספק האימות החדש:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
מעבירים את האובייקט
Credential
אלlinkWithCredential()
של המשתמש שמחובר לחשבון method:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
אם הקריאה אל linkWithCredential()
תתבצע בהצלחה, המשתמש יוכל להיכנס עכשיו באמצעות
לכל ספק אימות מקושר, ולגשת לאותם נתוני Firebase.
ביטול הקישור של ספק אימות לחשבון משתמש
ניתן לבטל את הקישור של ספק אימות לחשבון, כך שהמשתמש לא יוכל להיכנס לחשבון עם הספק הזה.
כדי לבטל את הקישור של ספק אימות לחשבון משתמש, מעבירים את מזהה הספק לשיטה unlink()
. אפשר לקבל את מזהי הספקים של ספקי ההרשאות שמקושרים אל
משתמש מהמאפיין providerData
של האובייקט User
.
try {
await FirebaseAuth.instance.currentUser?.unlink(providerId);
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "no-such-provider":
print("The user isn't linked to the provider or the provider "
"doesn't exist.");
break;
default:
print("Unknown error.");
}
}