Use o Firebase Authentication para criar e usar contas anônimas temporárias e fazer a autenticação no Firebase. Com essas contas, os usuários que ainda não se registraram no seu app podem trabalhar com os dados protegidos pelas regras de segurança. Se um usuário anônimo se registrar no seu app, vincule as credenciais de login à conta anônima para que ele continue trabalhando com os dados protegidos nas sessões futuras.
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 vinculado o app ao projeto do Firebase, faça isso no Console do Firebase.
- Ative a autenticação anônima:
- No Console do Firebase, abra a seção Auth.
- Na página Métodos de login, ative o método de login Anônimo.
Fazer a autenticação anônima no Firebase
Quando um usuário não conectado acessar um recurso do app que exige autenticação no Firebase, faça login dele anonimamente executando as seguintes etapas:
- 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 inicializador doApp
ou no métodoapplication(_:didFinishLaunchingWithOptions:)
do delegado do app:Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Chame o método
signInAnonymouslyWithCompletion:
:Swift
Auth.auth().signInAnonymously { authResult, error in // ... }
Objective-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Se o método
signInAnonymouslyWithCompletion:
for concluído com sucesso, você poderá coletar os dados da conta do usuário anônimo a partir do objetoFIRAuthDataResult
:Swift
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
Objective-C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
Converter uma conta anônima em permanente
Quando um usuário anônimo se registra no seu app, ele pode continuar trabalhando com a nova conta. Por exemplo, você pode deixar no carrinho de compras dessa conta os itens adicionados antes do registro. Para isso, execute as seguintes etapas:
- Quando o usuário se registrar, conclua o fluxo de login do
provedor de autenticação até a chamada de um dos métodos, mas sem incluir essa etapa
FIRAuth.signInWith
. Por exemplo, consiga o token do ID do Google, o token de acesso do Facebook ou o endereço de e-mail e a senha do usuário. Consiga um
FIRAuthCredential
para o novo provedor de autenticação:Login do Google
Swift
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
Objective-C
GIDAuthentication *authentication = user.authentication; FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken accessToken:authentication.accessToken];
Login do Facebook
Swift
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Objective-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Login com e-mail/senha
Swift
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Objective-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Passe o objeto
FIRAuthCredential
para o métodolinkWithCredential:completion:
do usuário que fez login:Swift
user.link(with: credential) { authResult, error in // ... } }
Objective-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Se a chamada a linkWithCredential:completion:
for realizada corretamente, a nova conta do usuário terá
acesso aos dados do Firebase da conta anônima.
Próximas etapas
Agora que os usuários podem se autenticar com o Firebase, use as regras do Firebase para controlar os acessos ao banco de dados.