Ir para o console

Autenticar anonimamente com o Firebase no iOS

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 inscreveram no seu app podem trabalhar com os dados protegidos pelas regras de segurança. Se um usuário anônimo se inscrever, vincule as credenciais de login à conta anônima para que ele continue trabalhando com os dados protegidos em sessões posteriores.

Antes de começar

  1. Adicione o Firebase ao seu projeto do iOS.
  2. Inclua os seguintes pods no seu Podfile:
    pod 'Firebase/Auth'
  3. Caso você ainda não tenha conectado o app ao seu projeto do Firebase, faça isso no Console do Firebase.
  4. Ative a autenticação anônima:
    1. No Console do Firebase, abra a seção Auth.
    2. 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:

  1. Importe o módulo do Firebase no UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. Configure uma instância compartilhada do FirebaseApp, normalmente encontrada no método application:didFinishLaunchingWithOptions: do aplicativo:

    Swift

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

    Objective-C

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

    Swift

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

    Objective-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
  4. 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 objeto FIRAuthDataResult:

    Swift

    let user = authResult.user
    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 inscreve 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 da inscrição. Para isso, siga as etapas abaixo:

  1. Depois que o usuário se conectar, conclua o fluxo de login para o provedor de autenticação até a chamada de um dos métodos FIRAuth.signInWith, mas sem incluir essa etapa. Por exemplo, use o código do token do Google, o token de acesso do Facebook ou o e-mail e a senha.
  2. Crie um FIRAuthCredential para o novo provedor de autenticação:

    Login do Google
    Swift
    guard let authentication = user.authentication else { return }
    let credential = GoogleAuthProvider.credential(withIDToken: authentication.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];
    
  3. Envie o objeto FIRAuthCredential para o método linkWithCredential:completion: do usuário conectado:

    Swift
        user.linkAndRetrieveData(with: credential) { (authResult, error) in
      // ...
    }}
    
    Objective-C
        [[FIRAuth auth].currentUser linkAndRetrieveDataWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];

Se a chamada para linkWithCredential:completion: tiver sucesso, a nova conta do usuário poderá acessar os 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 respectivos acessos ao banco de dados.