אתם יכולים לאפשר למשתמשים להיכנס לאפליקציה שלכם באמצעות כמה ספקי אימות על ידי קישור פרטי הכניסה של ספק האימות לחשבון משתמש קיים. אפשר לזהות משתמשים באמצעות אותו מזהה משתמש ב-Firebase, בלי קשר לספק האימות שבו הם השתמשו כדי להיכנס לחשבון. לדוגמה, משתמש שנכנס באמצעות סיסמה יכול לקשר חשבון Google ולהיכנס באמצעות אחת מהשיטות האלה בעתיד. לחלופין, משתמש אנונימי יכול לקשר חשבון פייסבוק, ואז להיכנס לחשבון באמצעות פייסבוק כדי להמשיך להשתמש באפליקציה.
לפני שמתחילים
מוסיפים לאפליקציה תמיכה בשני ספקי אימות או יותר (יכול להיות שזה כולל אימות אנונימי).
קישור פרטי כניסה של ספק אימות לחשבון משתמש
כדי לקשר פרטי כניסה של ספק אימות לחשבון משתמש קיים:
מבצעים כניסה לחשבון המשתמש באמצעות ספק או שיטת אימות כלשהם.
משלימים את תהליך הכניסה של ספק האימות החדש עד לשלב של קריאה לאחת מהשיטות של
signInWith
, אבל לא כולל השלב הזה. לדוגמה, קבלת טוקן מזהה של Google, טוקן גישה של פייסבוק או כתובת אימייל וסיסמה של המשתמש.מקבלים אובייקט
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()
של המשתמש שנכנס: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.");
}
}
פתרון בעיות
אם נתקלתם בשגיאות כשניסיתם לקשר כמה חשבונות, תוכלו לעיין במסמכים בנושא כתובות אימייל מאומתות.