Você pode usar o Firebase Authentication para criar e usar contas anônimas temporárias para autenticação no Firebase. Essas contas anônimas temporárias podem ser usadas para permitir que usuários que ainda não se inscreveram no seu aplicativo trabalhem com dados protegidos por regras de segurança. Se um usuário anônimo decidir se inscrever no seu aplicativo, você poderá vincular suas credenciais de login à conta anônima para que ele possa continuar trabalhando com seus dados protegidos em sessões futuras.
Antes de você começar
Use o Swift Package Manager para instalar e gerenciar dependências do Firebase.
- No Xcode, com o projeto do seu aplicativo aberto, navegue até File > Add Packages .
- Quando solicitado, adicione o repositório SDK das plataformas Apple do Firebase:
- Escolha a biblioteca Firebase Authentication.
- Adicione o sinalizador
-ObjC
à seção Outros sinalizadores de vinculador das configurações de compilação do seu destino. - Quando terminar, o Xcode começará automaticamente a resolver e baixar suas dependências em segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
- Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça isso no console do Firebase .
- Habilite autenticação anônima:
- No console do Firebase , abra a seção Auth .
- Na página Métodos de login , habilite o método de login anônimo .
- Opcional : se você tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá ativar a limpeza automática. Ao ativar esta configuração, as contas anônimas com mais de 30 dias serão excluídas automaticamente. Em projetos com limpeza automática habilitada, a autenticação anônima não será mais contabilizada nos limites de uso ou nas cotas de cobrança. Consulte Limpeza automática .
Autenticar com Firebase anonimamente
Quando um usuário desconectado usa um recurso do aplicativo que requer autenticação com o Firebase, faça login do usuário anonimamente seguindo estas etapas:
- Importe o módulo
FirebaseCore
em seuUIApplicationDelegate
, bem como quaisquer outros módulos Firebase que seu delegado de aplicativo usa. Por exemplo, para usar o Cloud Firestore e o Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Rápido
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objetivo-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configure uma instância compartilhada
FirebaseApp
no métodoapplication(_:didFinishLaunchingWithOptions:)
delegado do seu aplicativo:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Rápido
// Use Firebase library to configure APIs FirebaseApp.configure()
Objetivo-C
// Use Firebase library to configure APIs [FIRApp configure];
- Se estiver usando SwiftUI, você deve criar um delegado de aplicativo e anexá-lo à estrutura
App
por meio deUIApplicationDelegateAdaptor
ouNSApplicationDelegateAdaptor
. Você também deve desativar o swizzling de delegado do aplicativo. Para obter mais informações, consulte as instruções do SwiftUI .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Chame o método
signInAnonymouslyWithCompletion:
::Rápido
Auth.auth().signInAnonymously { authResult, error in // ... }
Objetivo-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Se o método
signInAnonymouslyWithCompletion:
for concluído sem erros, você poderá obter os dados da conta do usuário anônimo do objetoFIRAuthDataResult
:Rápido
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
Objetivo-C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
Converter uma conta anônima em uma conta permanente
Quando um usuário anônimo se inscreve em seu aplicativo, você pode permitir que ele continue trabalhando com a nova conta. Por exemplo, você pode disponibilizar os itens que o usuário adicionou ao carrinho de compras antes de se inscrever em sua nova conta. carrinho de compras da conta. Para fazer isso, conclua as seguintes etapas:
- Quando o usuário se inscrever, conclua o fluxo de login do provedor de autenticação do usuário até, mas não incluindo, chamar um dos métodos
FIRAuth.signInWith
. Por exemplo, obtenha o token de ID do Google, o token de acesso do Facebook ou o endereço de e-mail e a senha do usuário. Obtenha um
FIRAuthCredential
para o novo provedor de autenticação:Login do Google
Rápido
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
Objetivo-C
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Entrar no Facebook
Rápido
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Objetivo-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Login com senha de e-mail
Rápido
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Objetivo-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Passe o objeto
FIRAuthCredential
para o métodolinkWithCredential:completion:
do usuário de login:Rápido
user.link(with: credential) { authResult, error in // ... } }
Objetivo-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Se a chamada para linkWithCredential:completion:
for bem-sucedida, a nova conta do usuário poderá acessar os dados do Firebase da conta anônima.
Limpeza automática
Se você tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá ativar a limpeza automática no Firebase Console. Ao ativar esse recurso, você permite que o Firebase exclua automaticamente contas anônimas com mais de 30 dias. Em projetos com limpeza automática habilitada, a autenticação anônima não será contabilizada nos limites de uso ou nas cotas de cobrança.
- Quaisquer contas anônimas criadas após a ativação da limpeza automática poderão ser excluídas automaticamente a qualquer momento após 30 dias após a criação.
- As contas anônimas existentes estarão qualificadas para exclusão automática 30 dias após a ativação da limpeza automática.
- Se você desativar a limpeza automática, todas as contas anônimas programadas para exclusão permanecerão programadas para exclusão.
- Se você "atualizar" uma conta anônima vinculando-a a qualquer método de login, a conta não será excluída automaticamente.
Se você quiser ver quantos usuários serão afetados antes de ativar esse recurso e tiver atualizado seu projeto para o Firebase Authentication com Identity Platform , poderá filtrar por is_anon
no Cloud Logging .
Próximos passos
Agora que os usuários podem se autenticar com o Firebase, você pode controlar o acesso deles aos dados no seu banco de dados do Firebase usando regras do Firebase .