using PlayFab.ClientModels;
using PlayFab.DataModels;
using PlayFab.ProfilesModels;
using System.Collections.Generic;
public class PlayfabLogin : MonoBehaviour
public static string PlayFabID;
private string userEmail;
private string userPassword;
public TMP_InputField inputUserEmailLogin;
public TMP_InputField inputUserSenhaLogin;
public TMP_InputField inputUsername;
public TMP_InputField inputEmail;
public TMP_InputField inputSenha;
public TextMeshProUGUI Mensagem;
public GameObject loginPanel;
public static PlayfabLogin PFL;
public List<char> numeros = new List<char> ();
public List<char> maiusculas = new List<char> ();
if (PFL != null && PFL != this)
Destroy (this.gameObject);
DontDestroyOnLoad (this.gameObject);
public void EfetuarLogin ()
if (string.IsNullOrEmpty (inputUserEmailLogin.text) || string.IsNullOrEmpty (inputUserSenhaLogin.text))
MostrarMensagem ("Preencha todos os campos!");
userEmail = inputUserEmailLogin.text;
userPassword = inputUserSenhaLogin.text;
var request = new LoginWithEmailAddressRequest { Email = userEmail, Password = userPassword };
PlayFabClientAPI.LoginWithEmailAddress (request, OnLoginSuccess, OnLoginEmailFailure);
private void OnLoginEmailFailure (PlayFabError obj)
username = inputUserEmailLogin.text;
var requestLogin = new LoginWithPlayFabRequest { Username = username, Password = userPassword };
PlayFabClientAPI.LoginWithPlayFab (requestLogin, OnLoginSuccess, OnLoginFailure);
public void CriarConta ()
if (string.IsNullOrEmpty (inputUsername.text) || string.IsNullOrEmpty (inputEmail.text) || string.IsNullOrEmpty (inputSenha.text))
MostrarMensagem ("Preencha todos os campos!");
else if( inputUsername.text.Length < 3)
MostrarMensagem ("Nome usuário dever ter de 3 a 20 caracteres!");
else if (inputSenha.text.Length < 6)
MostrarMensagem ("Senha deve ter de 6 a 100 caracteres!");
char[] s = inputSenha.text.ToCharArray ();
for(int i= 0; i < s.Length; i++)
foreach(var c in numeros)
foreach (var m in maiusculas)
if (pN == false || pM == false)
MostrarMensagem ("A senha dever ter números e letras Maiúsculas!");
username = inputUsername.text.ToLower ();
userEmail = inputEmail.text.ToLower ();
userPassword = inputSenha.text;
var registerRequest = new RegisterPlayFabUserRequest { Email = userEmail, Password = userPassword, Username = username };
PlayFabClientAPI.RegisterPlayFabUser (registerRequest, OnRegisterSuccess, OnRegisterFailure);
private void OnLoginSuccess (LoginResult result)
Debug.Log ("Login efetuado com sucesso!");
PlayFabID = result.PlayFabId;
PegaDisplayName (PlayFabID);
loginPanel.SetActive (false);
GerenciadorRede.instance.Conectar ();
private void OnRegisterSuccess (RegisterPlayFabUserResult result)
Debug.Log ("Conta criada com sucesso!");
PlayFabClientAPI.UpdateUserTitleDisplayName (new UpdateUserTitleDisplayNameRequest { DisplayName = username },
var request = new LoginWithEmailAddressRequest { Email = userEmail, Password = userPassword };
PlayFabClientAPI.LoginWithEmailAddress (request, OnLoginSuccess, OnLoginFailure);
Debug.Log (falha.ErrorMessage);
private void OnLoginFailure (PlayFabError error)
case PlayFabErrorCode.AccountNotFound:
MostrarMensagem ("Não foi possível efetuar o login!\nConta não encontrada!");
case PlayFabErrorCode.InvalidEmailOrPassword:
MostrarMensagem ("Não foi possível efetuar o login!\nE-mail ou senha inválidos");
MostrarMensagem ("Não foi possível efetuar o login!\nVerifique os dados informados!");
private void OnRegisterFailure (PlayFabError error)
case PlayFabErrorCode.InvalidParams:
MostrarMensagem ("Não foi possível criar a sua conta!\nVerifique os dados informados!");
case PlayFabErrorCode.UsernameNotAvailable:
MostrarMensagem ("Não foi possível criar a sua conta!\nNome de usuário já em uso!");
case PlayFabErrorCode.EmailAddressNotAvailable:
MostrarMensagem ("Já possui uma conta para o e-mail informado!");
Debug.LogError (error.ErrorMessage);
MostrarMensagem (error.ErrorMessage);
public void MostrarMensagem (string texto)
public void PegaDadosJogador (string id)
PlayFabClientAPI.GetUserData (new GetUserDataRequest ()
if (result.Data == null || !result.Data.ContainsKey (id))
Debug.Log ("Conteúdo vazio!");
else if (result.Data.ContainsKey (id))
PlayerPrefs.SetString (id, result.Data[id].Value);
Debug.Log (error.GenerateErrorReport ());
public void SalvaDadosJogador (string id, string valor)
PlayFabClientAPI.UpdateUserData (new UpdateUserDataRequest ()
Data = new Dictionary<string, string> () {
result => Debug.Log ("Dados do jogador atualizados com sucesso!"),
Debug.Log (error.GenerateErrorReport ());
public void PegaDisplayName (string playFabId)
PlayFabClientAPI.GetPlayerProfile (new GetPlayerProfileRequest ()
ProfileConstraints = new PlayerProfileViewConstraints ()
result => NickName = result.PlayerProfile.DisplayName,
error => Debug.Log (error.ErrorMessage));