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