میتوانید به کاربران اجازه دهید با استفاده از چندین ارائهدهنده احراز هویت، با پیوند دادن اعتبار ارائهدهنده تأیید اعتبار به یک حساب کاربری موجود، به برنامه شما وارد شوند. کاربران با همان شناسه کاربر Firebase بدون توجه به ارائهدهنده احراز هویتی که برای ورود به سیستم استفاده کردهاند، قابل شناسایی هستند. برای مثال، کاربری که با رمز ورود وارد شده است، میتواند یک حساب Google را پیوند داده و در آینده با هر روشی وارد شود. یا، یک کاربر ناشناس میتواند یک حساب فیسبوک را پیوند دهد و بعداً برای ادامه استفاده از برنامه شما، با فیسبوک وارد شود.
قبل از اینکه شروع کنی
پشتیبانی از دو یا چند ارائه دهنده احراز هویت (احتمالاً احراز هویت ناشناس) را به برنامه خود اضافه کنید.
اعتبار ارائه دهنده تأیید اعتبار را به یک حساب کاربری پیوند دهید
برای پیوند دادن اطلاعات کاربری ارائهدهنده تأیید اعتبار به یک حساب کاربری موجود:
با استفاده از هر ارائه دهنده یا روش احراز هویت، کاربر را وارد کنید.
جریان ورود به سیستم ارائهدهنده احراز هویت جدید را تا فراخوانی یکی از روشهای
signInWith
- بدون احراز هویت کامل کنید. به عنوان مثال، کد Google ID کاربر، رمز دسترسی فیس بوک، یا ایمیل و رمز عبور کاربر را دریافت کنید.برای ارائهدهنده احراز هویت جدید یک شیء
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("Unkown error.");
}
}