É possível usar o Firebase Authentication para permitir que seus usuários se autentiquem com o Firebase usando os endereços de e-mail e senhas deles e gerenciem as contas baseadas em senha do app.
Antes de começar
Antes de poder usar o Firebase Authentication, você precisa fazer o seguinte:
Registre seu projeto do Unity e configurá-lo para usar o Firebase.
Se o projeto do Unity já usa o Firebase, ele já está registrado e configurado para essa plataforma.
Se você não tiver um projeto do Unity, faça o download de um app de exemplo.
Adicione o SDK do Firebase para Unity (especificamente
FirebaseAuth.unitypackage
) ao seu projeto.
Adicionar o Firebase ao seu projeto do Unity envolve tarefas no Console do Firebase e no projeto aberto do Unity. Por exemplo, fazer o download dos arquivos de configuração do Firebase no console e movê-los para o projeto do Unity.
Acessar a classe Firebase.Auth.FirebaseAuth
A classe FirebaseAuth
é o gateway para todas as chamadas de API.
Ela pode ser acessada por meio do FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Criar uma conta baseada em senha
Para criar uma nova conta de usuário com uma senha, realize as seguintes etapas no código de login do app:
- Quando um novo usuário se inscrever pelo formulário do app, conclua qualquer etapa de validação de nova conta exigida pelo aplicativo, como verificar se a senha foi digitada corretamente e atende aos requisitos de complexidade.
- Crie uma conta enviando o endereço de e-mail e a senha do novo usuário
para
FirebaseAuth.CreateUserWithEmailAndPassword
:auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception); return; } // Firebase user has been created. Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("Firebase user created successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Conectar um usuário com endereço de e-mail e senha
As etapas para um usuário fazer login com uma senha são semelhantes às de criação de uma nova conta. Na função de login do app, faça o seguinte:
- Quando um usuário fizer login no app, transmita o endereço de e-mail e
a senha dele para
FirebaseAuth.SignInWithEmailAndPassword
:auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithEmailAndPasswordAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithEmailAndPasswordAsync 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); });
- Também é possível criar as credenciais e fazer login como nos outros fluxos de trabalho:
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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); });
Recomendado: ativar a proteção contra enumeração de e-mails
Alguns métodos do Firebase Authentication que usam endereços de e-mail como parâmetros geram erros específicos caso o endereço não seja registrado quando necessário (por exemplo, ao fazer login com um endereço de e-mail e senha, ou se ele for registrado quando desnecessário, como ao mudar o e-mail de um usuário). Embora esses métodos sejam úteis para sugerir soluções específicas aos usuários, eles também podem ser usados indevidamente por agentes mal-intencionados para descobrir os endereços de e-mail registrados.
Para mitigar esse risco, recomendamos ativar a proteção contra enumeração de e-mails
no seu projeto usando a ferramenta gcloud
do Google Cloud. A ativação desse
recurso muda o comportamento dos relatórios de erro do Firebase Authentication: verifique se o app
não se baseia em erros mais específicos.
Próximas etapas
Após o primeiro login do usuário, uma nova conta é criada e vinculada às credenciais, que podem ser o nome e a senha, o número de telefone ou as informações do provedor de autenticação com o qual o usuário fez login. 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 do Firebase Realtime Database e do Cloud Storage, é possível receber o ID exclusivo do usuário conectado da variável
auth
e usar esse ID 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();