Ao vincular as credenciais de provedores de autenticação a contas de usuário existentes, você permite que esses usuários façam login no seu app usando diferentes provedores. O ID do Firebase identifica usuários de qualquer provedor de autenticação. Por exemplo, um usuário que fez login com uma senha pode vincular uma Conta do Google e usar um desses métodos. Ou um usuário anônimo pode vincular uma conta do Facebook para acessar o app.
Antes de começar
No app, adicione suporte a dois ou mais provedores de autenticação, incluindo autenticação anônima.
Vincular credenciais de provedores de autenticação a uma conta de usuário
Para vincular credenciais de provedores de autenticação a uma conta de usuário, faça o seguinte:
Faça login com algum provedor ou método de autenticação.
Conclua o fluxo de login para o novo provedor de autenticação até a chamada de um dos métodos
signInWith
. Por exemplo, use o token de ID do Google, o token de acesso do Facebook ou o e-mail e a senha.Receba um objeto
Credential
para o novo provedor de autenticação:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
Passe o objeto
Credential
para o métodolinkWithCredential()
do usuário que fez login: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."); } ```
Se a chamada para linkWithCredential()
for concluída, o usuário poderá fazer login
com um dos provedores de autenticação vinculados e acessar os dados do Firebase.
Desvincular um provedor de autenticação de uma conta de usuário
É possível desvincular um provedor de autenticação de uma conta para que o usuário não faça mais login com ele.
Para desvincular um provedor de autenticação de uma conta de usuário, transmita o ID dele ao
método unlink()
. Consiga esses IDs dos provedores de autenticação vinculados a um
usuário usando a propriedade providerData
do objeto 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.");
}
}