Ir para o console

Primeiros passos com o Firebase Authentication em C++

Use o Firebase Authentication para permitir que os usuários façam login no seu app com um ou mais métodos de login, inclusive login com endereço de e-mail e senha, além de provedores de identidade federados como o Login do Google e do Facebook. Veja neste tutorial os primeiros passos com o Firebase Authentication e como adicionar ao app um login com endereço de e-mail e senha.

Conecte o projeto em C++ ao Firebase

Antes de usar o Firebase Authentication, é necessário:

  • Registrar seu projeto em C++ e configurá-lo para usar o Firebase

    Se o projeto em C++ já usa o Firebase, então ele já está registrado e configurado para o Firebase.

  • No arquivo build.gradle do nível de projeto, certifique-se de incluir o repositório Maven do Google nas seções buildscript e allprojects.

  • Adicionar o SDK do Firebase para C++ ao seu projeto em C ++.

A adição do Firebase ao projeto em C++ envolve tarefas no Console do Firebase e no projeto em C++ aberto (por exemplo, você faz o download dos arquivos de configuração do Firebase no console e os move para o projeto em C++).

Inscrição de novos usuários

Crie um formulário que permita que novos usuários se inscrevam no seu app usando endereço de e-mail e senha. Quando um usuário preencher o formulário, valide o endereço de e-mail e a senha informados e transmita-os para o método CreateUserWithEmailAndPassword:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPassword(email, password);

Para verificar o status da operação de criação da conta, registre um retorno de chamada no objeto CreateUserWithEmailAndPasswordLastResult da classe Future ou, se estiver criando um jogo ou um app com algum tipo de loop de atualização periódica, consulte o status no loop de atualização.

Por exemplo, com uma classe Future:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result.OnCompletion(
    [](const firebase::Future<firebase::auth::User*>& result,
       void* user_data) {
      // `user_data` is the same as &my_program_context, below.
      // Note that we can't capture this value in the [] because std::function
      // is not supported by our minimum compiler spec (which is pre C++11).
      MyProgramContext* program_context =
          static_cast<MyProgramContext*>(user_data);

      // Process create user result...
      (void)program_context;
    },
    &my_program_context);

Ou, para pesquisar, faça algo como o seguinte exemplo no loop de atualização do seu jogo:

firebase::Future<firebase::auth::User*> result =
    auth->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase::auth::User* user = *result.result();
    printf("Create user succeeded for email %s\n", user->email().c_str());
  } else {
    printf("Created user failed with error '%s'\n", result.error_message());
  }
}

Inscrever usuários existentes

Crie um formulário que permita que usuários existentes façam login com um endereço de e-mail e senha. Quando o usuário preencher o formulário, chame o método SignInWithEmailAndPassword:

firebase::Future<firebase::auth::User*> result =
    auth->SignInWithEmailAndPassword(email, password);

Para conseguir o resultado da operação de login, siga o mesmo procedimento da inscrição.

Definir um listener do estado de autenticação e coletar dados da conta

Para responder a eventos de login e logout, anexe um listener ao objeto de autenticação global. Esse listener é chamado sempre que o estado de login do usuário muda. O listener é executado somente depois de o objeto de autenticação ter sido totalmente inicializado e depois de todas as chamadas de rede terem sido concluídas. Por isso, ele é a melhor maneira de verificar informações sobre o usuário conectado.

Para criar o listener, implemente a classe abstrata firebase::auth::AuthStateListener. Por exemplo, para criar um listener para receber informações sobre o usuário quando ele fizer login com sucesso:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 public:
  void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase::auth::User* user = auth->current_user();
    if (user != nullptr) {
      // User is signed in
      printf("OnAuthStateChanged: signed_in %s\n", user->uid().c_str());
      const std::string displayName = user->DisplayName();
      const std::string emailAddress = user->Email();
      const std::string photoUrl = user->PhotoUrl();
    } else {
      // User is signed out
      printf("OnAuthStateChanged: signed_out\n");
    }
    // ...
  }
};

Anexe o listener com o método AddAuthStateListener do objeto firebase::auth::Auth:

MyAuthStateListener state_change_listener;
auth->AddAuthStateListener(&state_change_listener);

Próximas etapas

Saiba como adicionar suporte para outros provedores de identidade e contas de convidados anônimos: