Introdução ao Firebase Authentication no Unity

Você pode usar o Firebase Authentication para permitir que os usuários façam login no seu jogo usando um ou mais métodos de login, incluindo login com endereço de e-mail e senha, e provedores de identidade federados, como Login do Google e Login do Facebook. Este tutorial é uma introdução ao Firebase Authentication, mostrando como adicionar endereço de e-mail e login com senha ao seu jogo.

Antes de você começar

Antes de usar o Firebase Authentication , você precisa:

  • Registre seu projeto Unity e configure-o para usar o Firebase.

    • Se o seu projeto do Unity já usa o Firebase, ele já está registrado e configurado para o Firebase.

    • Se você não tiver um projeto do Unity, poderá baixar um aplicativo de exemplo .

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

Observe que adicionar o Firebase ao seu projeto do Unity envolve tarefas no console do Firebase e no seu projeto aberto do Unity (por exemplo, você baixa os arquivos de configuração do Firebase do console e os move para o seu projeto do Unity).

Cadastre novos usuários

Crie um formulário que permita que novos usuários se registrem no seu jogo usando seu endereço de e-mail e uma senha. Quando um usuário preencher o formulário, valide o endereço de e-mail e a senha fornecidos pelo usuário e, em seguida, passe-os para o método CreateUserWithEmailAndPasswordAsync :

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);
});

Faça login de usuários existentes

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

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);
});

Defina um manipulador de eventos de mudança de estado de autenticação e obtenha dados do usuário

Para responder a eventos de entrada e saída, anexe um manipulador de eventos ao objeto de autenticação global. Esse manipulador é chamado sempre que o estado de login do usuário muda. Como o manipulador é executado somente depois que o objeto de autenticação é totalmente inicializado e após a conclusão de qualquer chamada de rede, ele é o melhor local para obter informações sobre o usuário conectado.

Registre o manipulador de eventos usando o campo StateChanged do objeto FirebaseAuth . Quando um usuário entra com êxito, você pode obter informações sobre o usuário no manipulador de eventos.

Finalmente, quando este objeto tiver Destroy chamado, ele chamará automaticamente OnDestroy . Limpe as referências do objeto Auth em OnDestroy .

void InitializeFirebase() {
  auth
= Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth
.StateChanged += AuthStateChanged;
 
AuthStateChanged(this, null);
}

void AuthStateChanged(object sender, System.EventArgs eventArgs) {
 
if (auth.CurrentUser != user) {
   
bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
       
&& auth.CurrentUser.IsValid();
   
if (!signedIn && user != null) {
     
DebugLog("Signed out " + user.UserId);
   
}
    user
= auth.CurrentUser;
   
if (signedIn) {
     
DebugLog("Signed in " + user.UserId);
      displayName
= user.DisplayName ?? "";
      emailAddress
= user.Email ?? "";
      photoUrl
= user.PhotoUrl ?? "";
   
}
 
}
}

void OnDestroy() {
  auth
.StateChanged -= AuthStateChanged;
  auth
= null;
}

Próximos passos

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