Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak Kullanıcılar, kimlik doğrulama sağlayıcısından ödeme alınır. Örneğin, Yeşil Ofis'in web sitesinde bir Google hesabını bağlayabilir ve duymuş olabilirsiniz. Alternatif olarak, anonim bir kullanıcı bir Facebook hesabını bağlayıp daha sonra uygulamanızı kullanmaya devam etmek için Facebook'ta oturum açın.
Başlamadan önce
İki veya daha fazla kimlik doğrulama sağlayıcı için destek ekleyin ( anonim kimlik doğrulama) ekleyebilirsiniz.
Yetkilendirme sağlayıcı kimlik bilgilerini bir kullanıcı hesabına bağla
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlamak için:
Herhangi bir kimlik doğrulama sağlayıcısı veya yöntemi kullanarak kullanıcının oturumunu açın.
Yeni kimlik doğrulama sağlayıcı için oturum açma akışını en fazla tamamlayın ancak Örneğin,
signInWith
yöntemlerinden biri çağrılır. Örneğin, Kullanıcının Google kimliği jetonu, Facebook erişim jetonu veya e-postası ve şifresi.Yeni kimlik doğrulama sağlayıcı için bir
Credential
nesnesi alın:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
Credential
nesnesini, oturum açan kullanıcınınlinkWithCredential()
cihazına iletin yöntem: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()
çağrısı başarılı olursa kullanıcı artık
ve aynı Firebase verilerine erişmelerini isteyebilir.
Yetkilendirme sağlayıcı ile kullanıcı hesabı arasındaki bağlantıyı kaldırma
Bir kimlik doğrulama sağlayıcı ile hesap arasındaki bağlantıyı kaldırabilirsiniz. Böylece, kullanıcı daha uzun süre oturum açmanızı sağlar.
Bir kimlik doğrulama sağlayıcının kullanıcı hesabıyla olan bağlantısını kaldırmak için sağlayıcı kimliğini
unlink()
yöntemini çağırın. Şuna bağlı kimlik doğrulama sağlayıcılarının sağlayıcı kimliklerini alabilirsiniz:
User
nesnesinin providerData
mülkündeki bir kullanıcı.
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.");
}
}