Crie um usuário
Você cria um novo usuário no seu projeto do Firebase chamando o método createUser
ou fazendo login em um usuário pela primeira vez usando um provedor de identidade federado, como Google Sign-In ou Facebook Login .
Você também pode criar novos usuários autenticados por senha na seção Autenticação do console do Firebase , na página Usuários.
Obtenha o usuário atualmente conectado
A maneira recomendada de obter o usuário atual é definindo um ouvinte no objeto Auth:
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Ao usar um ouvinte, você garante que o objeto Auth não esteja em um estado intermediário — como inicialização — ao obter o usuário atual.
Você também pode obter o usuário conectado no momento usando a propriedade currentUser
. Se um usuário não estiver conectado, currentUser
será nulo:
if Auth.auth().currentUser != nil {
// User is signed in.
// ...
} else {
// No user is signed in.
// ...
}
if ([FIRAuth auth].currentUser) {
// User is signed in.
// ...
} else {
// No user is signed in.
// ...
}
Obtenha o perfil de um usuário
Para obter informações de perfil de um usuário, use as propriedades de uma instância de FIRUser
. Por exemplo:
let user = Auth.auth().currentUser
if let user = user {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
var multiFactorString = "MultiFactor: "
for info in user.multiFactor.enrolledFactors {
multiFactorString += info.displayName ?? "[DispayName]"
multiFactorString += " "
}
// ...
}
FIRUser *user = [FIRAuth auth].currentUser;
if (user) {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
NSString *email = user.email;
NSString *uid = user.uid;
NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
[multiFactorString appendString:info.displayName];
[multiFactorString appendString:@" "];
}
NSURL *photoURL = user.photoURL;
// ...
}
Obtenha informações de perfil específicas do provedor de um usuário
Para obter as informações de perfil recuperadas dos provedores de login vinculados a um usuário, use a propriedade providerData
. Por exemplo:
let userInfo = Auth.auth().currentUser?.providerData[indexPath.row]
cell?.textLabel?.text = userInfo?.providerID
// Provider-specific UID
cell?.detailTextLabel?.text = userInfo?.uid
id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row];
cell.textLabel.text = [userInfo providerID];
// Provider-specific UID
cell.detailTextLabel.text = [userInfo uid];
Atualizar o perfil de um usuário
Você pode atualizar as informações básicas do perfil de um usuário (o nome de exibição do usuário e o URL da foto do perfil) com a classe UserProfileChangeRequest
. Por exemplo:
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = displayName
changeRequest?.commitChanges { error in
// ...
}
FIRUserProfileChangeRequest *changeRequest = [[FIRAuth auth].currentUser profileChangeRequest];
changeRequest.displayName = userInput;
[changeRequest commitChangesWithCompletion:^(NSError *_Nullable error) {
// ...
}];
Definir o endereço de e-mail de um usuário
Você pode definir o endereço de e-mail de um usuário com o método updateEmail
. Por exemplo:
Auth.auth().currentUser?.updateEmail(to: email) { error in
// ...
}
[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) {
// ...
}];
Enviar um e-mail de verificação a um usuário
Você pode enviar um e-mail de verificação de endereço para um usuário com o método sendEmailVerificationWithCompletion:
Por exemplo:
Auth.auth().currentUser?.sendEmailVerification { error in
// ...
}
[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) {
// ...
}];
Você pode personalizar o modelo de e-mail usado na seção Autenticação do console do Firebase , na página Modelos de e-mail. Consulte Modelos de e-mail na Central de Ajuda do Firebase.
Também é possível passar o estado por meio de uma URL de continuação para redirecionar de volta ao aplicativo ao enviar um e-mail de verificação.
Além disso, você pode localizar o e-mail de verificação atualizando o código do idioma na instância Auth antes de enviar o e-mail. Por exemplo:
Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()
[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];
Definir uma senha de usuário
Você pode definir uma senha de usuário com o método updatePassword
. Por exemplo:
Auth.auth().currentUser?.updatePassword(to: password) { error in
// ...
}
[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) {
// ...
}];
Envie um e-mail de redefinição de senha
Você pode enviar um email de redefinição de senha para um usuário com o método sendPasswordReset
. Por exemplo:
Auth.auth().sendPasswordReset(withEmail: email) { error in
// ...
}
[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) {
// ...
}];
Você pode personalizar o modelo de e-mail usado na seção Autenticação do console do Firebase , na página Modelos de e-mail. Consulte Modelos de e-mail na Central de Ajuda do Firebase.
Também é possível passar o estado por meio de uma URL de continuação para redirecionar de volta ao aplicativo ao enviar um e-mail de redefinição de senha.
Além disso, você pode localizar o e-mail de redefinição de senha atualizando o código do idioma na instância Auth antes de enviar o e-mail. Por exemplo:
Auth.auth().languageCode = "fr"
// To apply the default app language instead of explicitly setting it.
// Auth.auth().useAppLanguage()
[FIRAuth auth].languageCode = @"fr";
// To apply the default app language instead of explicitly setting it.
// [[FIRAuth auth] useAppLanguage];
Você também pode enviar e-mails de redefinição de senha do console do Firebase.
Excluir um usuário
Você pode excluir uma conta de usuário com o método delete
. Por exemplo:
let user = Auth.auth().currentUser
user?.delete { error in
if let error = error {
// An error happened.
} else {
// Account deleted.
}
}
FIRUser *user = [FIRAuth auth].currentUser;
[user deleteWithCompletion:^(NSError *_Nullable error) {
if (error) {
// An error happened.
} else {
// Account deleted.
}
}];
Você também pode excluir usuários da seção Autenticação do console do Firebase , na página Usuários.
Reautenticar um usuário
Algumas ações sensíveis à segurança, como excluir uma conta , definir um endereço de e-mail principal e alterar uma senha , exigem que o usuário tenha feito login recentemente. Se você realizar uma dessas ações e o usuário tiver feito login há muito tempo, o a ação falha com o erro FIRAuthErrorCodeCredentialTooOld
. Quando isso acontecer, autentique novamente o usuário obtendo novas credenciais de login do usuário e passando-as para reauthenticate
. Por exemplo:
let user = Auth.auth().currentUser
var credential: AuthCredential
// Prompt the user to re-provide their sign-in credentials
user?.reauthenticate(with: credential) { error in
if let error = error {
// An error happened.
} else {
// User re-authenticated.
}
}
FIRUser *user = [FIRAuth auth].currentUser;
FIRAuthCredential *credential;
// Prompt the user to re-provide their sign-in credentials
[user reauthenticateWithCredential:credential completion:^(NSError *_Nullable error) {
if (error) {
// An error happened.
} else {
// User re-authenticated.
}
}];
Importar contas de usuário
Você pode importar contas de usuário de um arquivo para seu projeto do Firebase usando o comando auth:import
da CLI do Firebase. Por exemplo:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14