Ir para o console

Autenticar anonimamente com o Firebase usando C++

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 de C++.
  2. Caso você ainda não tenha conectado o app ao seu projeto do Firebase, faça isso no Firebase console.
  3. 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 usar um recurso do app que exija autenticação com o Firebase, conecte esse usuário anonimamente executando as seguintes etapas:

A classe Auth é o gateway para todas as chamadas de API.
  1. Adicione os arquivos de cabeçalho Auth e App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. Crie uma classe firebase::App no código de inicialização:
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Adquira a classe firebase::auth::Auth para seu firebase::App. Há um mapeamento de um para um entre App e Auth.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Chame Auth::SignInAnonymously
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Se o programa tiver uma rotina de atualização executada regularmente (30 ou 60 vezes por segundo), você poderá confirmar os resultados a cada atualização usando Auth::SignInAnonymouslyLastResult:
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    Se o seu programa for baseado em eventos, você pode registrar um retorno de chamada na classe Future.
  • 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. Quando o usuário fizer login, conclua o fluxo de login para o provedor de autenticação até a chamada de um dos métodos Auth::SignInWith, mas sem incluir essa etapa. Por exemplo, use o token de código do Google, o token de acesso do Facebook ou o e-mail e a senha.
    2. Crie uma auth::Credential para o novo provedor de autenticação:

      Login do Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Login do Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      Login com e-mail/senha
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Transmita o objeto auth::Credential para o método LinkWithCredential do usuário conectado:

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

    Se a chamada para LinkWithCredential 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.