يمكنك السماح للمستخدمين بتسجيل الدخول إلى تطبيقك باستخدام موفري مصادقة متعددين عن طريق ربط بيانات اعتماد موفر المصادقة بحساب مستخدم حالي. يمكن التعرف على المستخدمين من خلال نفس معرف مستخدم 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()
الخاصة بمستخدم تسجيل الدخول: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.");
}
}