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

Você pode integrar o Firebase Authentication a um sistema de autenticação personalizado modificando seu servidor de autenticação para produzir tokens assinados personalizados quando um usuário fizer login com êxito. Seu aplicativo recebe esse token e o usa para autenticar com o Firebase.

Antes de você começar

  1. Antes de usar o Firebase Authentication , você precisa:

    • Registre seu projeto do Unity com seu projeto do Firebase.
    • Adicione o SDK do Firebase Unity (especificamente FirebaseAuth.unitypackage ) ao seu projeto Unity.

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

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

Autenticar com Firebase

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

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

  1. Quando os usuários fizerem login em seu aplicativo, envie suas credenciais de login (por exemplo, nome de usuário e senha) para seu servidor de autenticação. Seu servidor verifica as credenciais e retorna um token personalizado se forem válidos.
  2. Depois de receber o token personalizado do seu servidor de autenticação, passe-o para 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.AuthResult result = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          result.User.DisplayName, result.User.UserId);
    });
    

Próximos passos

Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é criada e vinculada às credenciais (ou seja, nome de usuário e senha, número de telefone ou informações do provedor de autenticação) com as quais o usuário fez login. Essa nova conta é armazenada como parte do seu projeto do Firebase e pode ser usada para identificar um usuário em todos os aplicativos do seu projeto, independentemente de como o usuário faz login.

  • Nos seus aplicativos, você pode obter informações básicas do 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 , você pode obter o ID de usuário exclusivo do usuário conectado na variável auth e usá-lo para controlar quais dados um usuário pode acessar.

Você pode permitir que os usuários façam login no seu aplicativo usando vários provedores de autenticação vinculando as credenciais do provedor de autenticação a uma conta de usuário existente.

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

auth.SignOut();