Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Autenticar com o Firebase anonimamente nas plataformas da Apple

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

Você pode usar o Firebase Authentication para criar e usar contas anônimas temporárias para autenticar com o Firebase. Essas contas anônimas temporárias podem ser usadas para permitir que usuários que ainda não se inscreveram em seu aplicativo trabalhem com dados protegidos por regras de segurança. Se um usuário anônimo decidir se inscrever em 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.

  1. No Xcode, com seu projeto de aplicativo aberto, navegue até File > Add Packages .
  2. Quando solicitado, adicione o repositório Firebase Apple Platform SDK:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Escolha a biblioteca Firebase Authentication.
  5. Quando terminar, o Xcode começará automaticamente a resolver e baixar suas dependências em segundo plano.

Em seguida, execute algumas etapas de configuração:

  1. Se você ainda não conectou seu aplicativo ao projeto do Firebase, faça-o no console do Firebase .
  2. Habilitar autenticação anônima:
    1. No console do Firebase , abra a seção Auth .
    2. Na página Métodos de entrada, habilite o método de entrada anônima .
    3. Opcional : Ative a limpeza automática. Ao habilitar essa 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 contará mais para limites de uso ou cotas de cobrança. Consulte Limpeza automática .

Autenticar com o Firebase anonimamente

Quando um usuário desconectado usa um recurso de aplicativo que requer autenticação com o Firebase, conecte o usuário anonimamente concluindo as seguintes etapas:

  1. Importe o módulo FirebaseCore em seu UIApplicationDelegate , bem como quaisquer outros módulos Firebase usados ​​pelo delegado do aplicativo. Por exemplo, para usar Cloud Firestore e autenticação:

    Rápido

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Configure uma instância compartilhada do FirebaseApp no ​​método application(_:didFinishLaunchingWithOptions:) do delegado do seu aplicativo:

    Rápido

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Chame o método signInAnonymouslyWithCompletion: ::

    Rápido

    Auth.auth().signInAnonymously { authResult, error in
      // ...
    }
    

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. Se o método signInAnonymouslyWithCompletion: concluído sem erros, você poderá obter os dados da conta do usuário anônimo do objeto FIRAuthDataResult :

    Rápido

    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 uma conta permanente

Quando um usuário anônimo se inscreve em seu aplicativo, você pode querer permitir que ele continue trabalhando com sua nova conta - por exemplo, você pode querer disponibilizar os itens que o usuário adicionou ao carrinho de compras antes de se inscreverem em seu novo carrinho de compras da conta. Para fazer isso, conclua as seguintes etapas:

  1. Quando o usuário se inscrever, conclua o fluxo de login para o 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 do usuário, token de acesso ao Facebook ou endereço de e-mail e senha.
  2. 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)
    
    Objective-C
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Entrar no Facebook
    Rápido
    let credential = FacebookAuthProvider
      .credential(withAccessToken: AccessToken.current!.tokenString)
    
    Objective-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Login com senha de e-mail
    Rápido
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Objective-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Passe o objeto FIRAuthCredential para o método linkWithCredential:completion: do usuário de login:

    Rápido
        user.link(with: credential) { authResult, error in
      // ...
    }
    }
    
    Objective-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

Quando você ativa a limpeza automática no Firebase console, as contas anônimas com mais de 30 dias são excluídas automaticamente. Habilitar essa configuração evita que seu banco de dados de usuários seja preenchido com contas não utilizadas. Em projetos com limpeza automática habilitada, a autenticação anônima não contará para limites de uso ou cotas de cobrança.

  • Todas as contas anônimas criadas após habilitar a limpeza automática serão excluídas 30 dias após a criação.
  • As contas anônimas criadas antes de ativar a limpeza automática serão excluídas cerca de 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 aos dados em seu banco de dados do Firebase usando as regras do Firebase.