Ir para o console

Autenticar com o Firebase usando um sistema personalizado de autenticação e o Unity

Você pode integrar o Firebase Authentication a um sistema de autenticação personalizado ao modificar seu servidor de autenticação para produzir tokens específicos e assinados quando um usuário faz login. Seu app recebe e utiliza esse token para se autenticar no Firebase.

Antes de começar

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

    • registrar seu projeto do Unity no seu projeto do Firebase;
    • adicionar o SDK do Firebase para Unity (especificamente, FirebaseAuth.unitypackage) ao seu projeto do Unity.

    Encontre instruções detalhadas para essas etapas de configuração inicial em Como adicionar o Firebase ao seu projeto do Unity.

  2. Para consultar as chaves de servidor do seu projeto, siga estas etapas:
    1. Acesse a página Contas de serviço nas configurações do seu projeto.
    2. Clique em Gerar uma nova chave privada na parte inferior da seção SDK Admin do Firebase da página Contas de serviço.
    3. O novo par de chave pública/privada da conta de serviço é salvo automaticamente no seu computador. Copie esse arquivo para o seu servidor de autenticação.

Autenticar com o Firebase

A classe FirebaseAuth é o gateway para todas as chamadas de API. É possível acessá-la por meio do FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Chame Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync com o token do servidor de autenticação.

  1. Quando os usuários fizerem login no seu app, envie as credenciais de login, como nome de usuário e senha, ao servidor de autenticação. As credenciais são verificadas e, se forem válidas, um token personalizado é retornado.
  2. Depois de receber o token personalizado do servidor de autenticação, transmita-o para o Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync para fazer login do usuário:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Próximas etapas

Depois que um usuário faz login pela primeira vez, uma nova conta é criada e vinculada às credenciais, que podem ser o número do telefone, o nome de usuário e a senha ou as informações do provedor de autenticação. Essa nova conta é armazenada como parte do projeto do Firebase e pode ser usada para identificar um usuário em todos os apps do projeto, seja qual for o método de login utilizado.

  • Nos seus apps, é possível consultar as informações básicas de perfil do usuário no objeto Firebase.Auth.FirebaseUser:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • Nas Regras de segurança do Firebase Realtime Database e do Cloud Storage, é possível usar a variável auth para encontrar o código exclusivo do usuário conectado. Use essa informação para controlar o acesso dele aos dados.

Os usuários podem fazer login no app usando vários provedores de autenticação. Basta vincular as credenciais desses provedores a uma conta de usuário.

Para desconectar um usuário, chame SignOut():

auth.SignOut();