Use Firebase Authentication para permitir que os usuários se autentiquem com o Firebase usando os próprios endereços de e-mail e senhas e para gerenciar as contas baseadas em senha do seu app.
Antes de começar
Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.
- No Xcode, com seu projeto do app aberto, navegue até File > Add Packages.
- Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
- Escolha a biblioteca Firebase Authentication.
- Adicione a sinalização
-ObjCà seção Outras sinalizações do vinculador das configurações de compilação do destino. - Quando terminar, o Xcode começará a resolver e fazer o download das dependências em segundo plano automaticamente.
https://github.com/firebase/firebase-ios-sdk.git
Em seguida, execute algumas etapas de configuração:
- Se você ainda não conectou o app ao projeto do Firebase, faça isso no console do Firebase.
- Ative o login com e-mail/senha:
- No console do Firebase, abra a seção Autenticação.
- Na guia Método de login, ative o login por E-mail/Senha e clique em Salvar.
Criar uma conta baseada em senha
Para criar uma nova conta de usuário com uma senha, conclua estas etapas na atividade de inscrição do seu aplicativo:
- Importe o módulo
FirebaseCorenoUIApplicationDelegate, assim como qualquer outro módulo do Firebase usado pelo delegado do app. Por exemplo, para usar Cloud Firestore, Authentication e:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma
instância compartilhada do
FirebaseAppno métodoapplication(_:didFinishLaunchingWithOptions:)do delegado do app:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se você estiver usando a SwiftUI, crie um delegado do aplicativo e o anexe
ao struct
AppviaUIApplicationDelegateAdaptorouNSApplicationDelegateAdaptor. Também é necessário desativar o swizzling do delegado do app. Para mais informações, consulte as instruções da SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Quando um novo usuário se inscrever usando o formulário do app, conclua as etapas de validação de nova conta exigidas, como verificar se a senha foi digitada corretamente e atende aos requisitos de complexidade.
- Crie uma nova conta enviando o endereço de e-mail e a senha do novo usuário para
createUser.Se a nova conta for criada corretamente, o usuário vai ser conectado e você vai receber os dados dela usando o objeto enviado para o método de callback.Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // ... }
Objective-C
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Conectar um usuário com endereço de e-mail e senha
As etapas para um usuário fazer login com uma senha são semelhantes às de criação de uma nova conta. Na atividade de login do app, faça o seguinte:
- Importe o módulo
FirebaseCorenoUIApplicationDelegate, assim como qualquer outro módulo do Firebase usado pelo delegado do app. Por exemplo, para usar Cloud Firestore, Authentication e:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma
instância compartilhada do
FirebaseAppno métodoapplication(_:didFinishLaunchingWithOptions:)do delegado do app:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se você estiver usando a SwiftUI, crie um delegado do aplicativo e o anexe
ao struct
AppviaUIApplicationDelegateAdaptorouNSApplicationDelegateAdaptor. Também é necessário desativar o swizzling do delegado do app. Para mais informações, consulte as instruções da SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Quando um usuário fizer login no app, envie o endereço de e-mail e a
senha para
signIn.Se o usuário fizer login corretamente, você poderá receber os dados da respectiva conta pelo objeto enviado para o método de retorno de chamada.Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in guard let strongSelf = self else { return } // ... }
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Recomendado: definir uma política de senha
É possível melhorar a segurança da conta aplicando requisitos de complexidade de senha.
Para configurar uma política de senha para seu projeto, abra a guia Política de senha na página "Configurações de autenticação" do console do Firebase:
As políticas de senha Firebase Authentication são compatíveis com os seguintes requisitos de senha:
É necessário usar letras minúsculas
Caractere maiúsculo obrigatório
Caractere numérico obrigatório
É necessário um caractere não alfanumérico
Os caracteres a seguir atendem ao requisito de caracteres não alfanuméricos:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~Tamanho mínimo da senha (variando de 6 a 30 caracteres; o padrão é 6)
Tamanho máximo da senha (4.096 caracteres)
É possível ativar a aplicação da política de senha em dois modos:
Exigir: não será possível se inscrever até que o usuário atualize a senha de acordo com sua política.
Notificar: os usuários podem se inscrever com uma senha que não está em conformidade com sua política. Ao usar esse modo, verifique se a senha do usuário está em conformidade com a política no lado do cliente e solicite que o usuário atualize a senha se ela não estiver em compliance.
Os novos usuários sempre precisam escolher uma senha que esteja em conformidade com sua política.
Se você tiver usuários ativos, recomendamos não ativar o upgrade forçado no login, a menos que tenha a intenção de bloquear o acesso de usuários com senhas que não obedecem à sua política. Em vez disso, use o modo de notificação, que permite que os usuários façam login com as senhas atuais e informa os requisitos que faltam na senha.
Recomendado: ativar a proteção contra enumeração de e-mails
Alguns métodos Firebase Authentication que usam endereços de e-mail como parâmetros vão gerar erros específicos se o endereço de e-mail não estiver registrado quando deveria estar (por exemplo, ao fazer login com um endereço de e-mail e uma senha) ou estiver registrado quando não deveria ser usado (por exemplo, ao alterar o endereço de e-mail de um usuário). Embora esses métodos sejam úteis para sugerir soluções específicas aos usuários, eles também podem ser usados indevidamente por agentes mal-intencionados para descobrir os endereços de e-mail registrados.
Para mitigar esse risco, recomendamos ativar a proteção contra enumeração de e-mails
no seu projeto usando a ferramenta gcloud do Google Cloud. Como a ativação desse
recurso muda o comportamento dos relatórios de erro do Firebase Authentication, verifique se o app
não se baseia em erros mais específicos.
Próximas etapas
Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login utilizado.
-
É possível receber as informações básicas de perfil do usuário do objeto
Usernos seus apps. Consulte Gerenciar usuários. Nas Regras de segurança Firebase Realtime Database e Cloud Storage, você pode acessar o ID exclusivo do usuário conectado pela variável
authe usar essas informações para controlar quais dados um usuário pode acessar.
Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.
Para desconectar um usuário, chame
signOut:.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Adicione também o código de tratamento de erros para todo o intervalo de erros de autenticação. Consulte Tratamento de erros.