É possível usar o Firebase Authentication para permitir que seus usuários se autentiquem com o Firebase usando os endereços de e-mail e senhas deles e gerenciem as contas baseadas em senha do 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 da Apple:
- Escolha a biblioteca do Firebase Authentication.
- 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
Em seguida, execute algumas etapas de configuração:
- Caso você ainda não tenha conectado 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 Authentication.
- Na guia Método de login, ative o login pelo método E-mail/senha e clique em Salvar.
Criar uma conta com base 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
FirebaseCore
noUIApplicationDelegate
, assim como qualquer outro módulo do Firebase usado pelo delegado do app. Por exemplo, para usar o Cloud Firestore e o Authentication:Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma
instância compartilhada do
FirebaseApp
, normalmente no métodoapplication:didFinishLaunchingWithOptions:
do app.Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Quando um novo usuário se inscrever usando o formulário do seu app, conclua as etapas de validação de nova conta exigidas pelo app, como verificar se a senha da nova conta 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
createUserWithEmail:email:password:completion:
.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
FirebaseCore
noUIApplicationDelegate
, assim como qualquer outro módulo do Firebase usado pelo delegado do app. Por exemplo, para usar o Cloud Firestore e o Authentication:Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma
instância compartilhada do
FirebaseApp
, normalmente no métodoapplication:didFinishLaunchingWithOptions:
do app.Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Quando um usuário fizer login no app, envie o endereço de e-mail e a senha dele para
signInWithEmail:email:password:completion:
.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) { // ... }];
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
FIRUser
nos seus apps. Consulte Gerenciar usuários. Nas Regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível receber o ID do usuário único conectado da variável
auth
e usar esse ID 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 gerenciamento dos erros de autenticação. Consulte Solucionar erros.