É possível integrar o Firebase Authentication a um sistema de autenticação personalizado modificando o servidor de autenticação para produzir tokens assinados personalizados quando um usuário faz login. Seu app recebe e usa esse token para se autenticar com o Firebase.
Antes de começar
-
Antes de usar Firebase Authentication, você precisa:
- registrar seu projeto do Unity no seu projeto do Firebase;
- Adicionar o SDK Firebase Unity (especificamente,
FirebaseAuth.unitypackage
) ao projeto do Unity.
Encontre instruções detalhadas para essas etapas de configuração inicial em Como adicionar o Firebase ao seu projeto do Unity.
- Para consultar as chaves de servidor do seu projeto, siga estas etapas:
- Acesse a página Contas de serviço nas configurações do seu projeto.
- Clique em Gerar uma nova chave privada na parte inferior da seção SDK Admin do Firebase da página Contas de serviço.
- O novo par de chaves pública/privada da conta de serviço é salvo automaticamente no seu computador. Copie esse arquivo para seu servidor de autenticação.
Autenticar no Firebase
A classeFirebaseAuth
é o gateway para todas as chamadas de API.
Ela pode ser acessada por meio de FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Chame Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync
com o token do servidor de
autenticação.
- 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.
- Depois de receber o token personalizado do servidor de autenticação, transmita-o para
Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync
e faça o 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óximas etapas
Depois que um usuário faz login pela primeira vez, uma nova conta de usuário é 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, use o objeto
Firebase.Auth.FirebaseUser
para receber as informações básicas de perfil do usuário.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 Firebase Realtime Database e Cloud Storage, você pode acessar o ID exclusivo do usuário conectado pela variável
auth
e usar essas informações para controlar quais dados um usuário pode acessar.
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();