Criar um usuário
Para criar um usuário no projeto do Firebase, chame o método
createUser
ou use um provedor de identidade
federado, como o Login do Google ou
do Facebook, para fazer o login do usuário pela primeira vez.
Também é possível criar novos usuários autenticados por senha na seção "Autenticação" do Console do Firebase, na página "Usuários".
Identificar o usuário conectado
A prática recomendada de identificação do usuário atual é definir um listener no objeto Auth:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in // ... }
Objective-C
self.handle = [[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) { // ... }];
Com um listener, você garante que o objeto Auth não esteja em um estado intermediário (como na inicialização) ao receber o usuário atual.
Também é possível receber o usuário conectado no momento usando a propriedade currentUser
. Se um usuário não estiver conectado, currentUser
será nulo:
Swift
if Auth.auth().currentUser != nil { // User is signed in. // ... } else { // No user is signed in. // ... }
Objective-C
if ([FIRAuth auth].currentUser) { // User is signed in. // ... } else { // No user is signed in. // ... }
Receber o perfil de um usuário
Para receber informações de perfil de um usuário, use as propriedades de uma instância de
FIRUser
. Por exemplo:
Swift
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 += " " } // ... }
Objective-C
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; // ... }
Receber informações específicas de provedor do perfil de um usuário
Para receber as informações de perfil obtidas dos provedores de login vinculados a um
usuário, use a propriedade providerData
. Por exemplo:
Swift
let userInfo = Auth.auth().currentUser?.providerData[indexPath.row] cell?.textLabel?.text = userInfo?.providerID // Provider-specific UID cell?.detailTextLabel?.text = userInfo?.uid
Objective-C
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
É possível atualizar as informações básicas de perfil de um usuário, como o nome de exibição e o URL da foto do perfil, com a classe UserProfileChangeRequest
. Exemplo:
Swift
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest() changeRequest?.displayName = displayName changeRequest?.commitChanges { error in // ... }
Objective-C
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
É possível definir o endereço de e-mail de um usuário com o método updateEmail
.
Por exemplo:
Swift
Auth.auth().currentUser?.updateEmail(to: email) { error in // ... }
Objective-C
[[FIRAuth auth].currentUser updateEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
Enviar um e-mail de verificação a um usuário
Envie um e-mail de verificação de endereço a um usuário com o
método sendEmailVerificationWithCompletion:
. Por exemplo:
Swift
Auth.auth().currentUser?.sendEmailVerification { error in // ... }
Objective-C
[[FIRAuth auth].currentUser sendEmailVerificationWithCompletion:^(NSError *_Nullable error) { // ... }];
É possível 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 transmitir um estado usando um URL de confirmação a fim de redirecionar para o app 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:
Swift
Auth.auth().languageCode = "fr" // To apply the default app language instead of explicitly setting it. // Auth.auth().useAppLanguage()
Objective-C
[FIRAuth auth].languageCode = @"fr"; // To apply the default app language instead of explicitly setting it. // [[FIRAuth auth] useAppLanguage];
Definir a senha de um usuário
Defina a senha de um usuário com o método updatePassword
updatePassword. Exemplo:
Swift
Auth.auth().currentUser?.updatePassword(to: password) { error in // ... }
Objective-C
[[FIRAuth auth].currentUser updatePassword:userInput completion:^(NSError *_Nullable error) { // ... }];
Enviar um e-mail de redefinição de senha
Envie um e-mail de redefinição de senha a um usuário com o método sendPasswordReset
. Por exemplo:
Swift
Auth.auth().sendPasswordReset(withEmail: email) { error in // ... }
Objective-C
[[FIRAuth auth] sendPasswordResetWithEmail:userInput completion:^(NSError *_Nullable error) { // ... }];
É possível 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 transmitir um estado usando um URL de confirmação a fim de redirecionar para o app ao enviar um e-mail de verificação.
Além disso, você pode localizar o e-mail de redefinição da senha atualizando o código do idioma na instância Auth antes de enviar o e-mail. Por exemplo:
Swift
Auth.auth().languageCode = "fr" // To apply the default app language instead of explicitly setting it. // Auth.auth().useAppLanguage()
Objective-C
[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 pelo Console do Firebase.
Excluir um usuário
Exclua uma conta de usuário com o método delete
. Exemplo:
Swift
let user = Auth.auth().currentUser
user?.delete { error in
if let error = error {
// An error happened.
} else {
// Account deleted.
}
}
Objective-C
FIRUser *user = [FIRAuth auth].currentUser;
[user deleteWithCompletion:^(NSError *_Nullable error) {
if (error) {
// An error happened.
} else {
// Account deleted.
}
}];
Também é possível excluir usuários na seção Authentication do Console do Firebase na página "Usuários".
Reautenticar um usuário
Algumas ações que apresentam riscos à segurança, como
excluir uma conta,
configurar um endereço de e-mail principal e
alterar uma senha, exigem que o usuário tenha
feito login recentemente. Se você executar uma dessas ações e o usuário tiver feito login há muito tempo, a ação falhará com o erro FIRAuthErrorCodeCredentialTooOld
. Quando isso acontecer, autentique o usuário novamente gerando novas credenciais de login e transmitindo-as para reauthenticate
. Exemplo:
Swift
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.
}
}
Objective-C
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
Use o comando auth:import
da CLI do Firebase para importar contas de usuário de um
arquivo para o projeto do Firebase. Por exemplo:
firebase auth:import users.json --hash-algo=scrypt --rounds=8 --mem-cost=14