У меня проблемы с созданием пользовательской аутентификации! Я использую бесплатный хост от 000WebHost для тестирования мультиплеера Фотона на Unity, но я получаю следующую ошибку в отладке Unity:
OperationResponse 230: ReturnCode: 32755 (десериализация пользовательской аутентификации завершилась неудачно: при синтаксическом анализе обнаружен неожиданный символ: U. Path », строка 0, позиция 0.).
Параметры: {} Сервер: NameServer Адрес: ns.exitgames.com:5058
UnityEngine.Debug: LogError (Объект)
Photon.Realtime.LoadBalancingClient: DebugReturn (DebugLevel, String) (в активах / Photon / PhotonRealtime / Code / LoadBalancingClient.cs: 1835)
Photon.Realtime.LoadBalancingClient: OnOperationResponse (OperationResponse) (в активах / Photon / PhotonRealtime / Code / LoadBalancingClient.cs: 1909)
ExitGames.Client.Photon.PeerBase: DeserializeMessageAndCallback (StreamBuffer) (в C: /Dev/photon-sdk-dotnet/PhotonDotnet/PeerBase.cs: 616)
ExitGames.Client.Photon.EnetPeer: DispatchIncomingCommands () (в C: /Dev/photon-sdk-dotnet/PhotonDotnet/EnetPeer.cs: 545)
ExitGames.Client.Photon.PhotonPeer: DispatchIncomingCommands () (в C: /Dev/photon-sdk-dotnet/PhotonDotnet/PhotonPeer.cs: 1473)
Photon.Pun.PhotonHandler: FixedUpdate () (в разделе «Активы / Фотон / Сеть-фотон-сеть» / Код / PhotonHandler.cs: 130)
Мой код аутентификации Unity:
using Photon.Pun;
using Photon;
public class Login : MonoBehaviour {
public InputField User_Input;
public InputField Pass_Input;
public Text Error_Text;
public string username;
public string password;
public void UserName(){
username = User_Input.text.ToString ();
}
public void UserPass(){
password = Pass_Input.text.ToString ();
}
public void SubmitLogin(){
PhotonNetwork.AuthValues = new AuthenticationValues ();
PhotonNetwork.AuthValues.AuthType = CustomAuthenticationType.Custom;
PhotonNetwork.AuthValues.AddAuthParameter ("username", username);
PhotonNetwork.AuthValues.AddAuthParameter ("password", password);
PhotonNetwork.ConnectUsingSettings();
}
void OnJoinedLooby(){
Debug.Log ("We did it");
}
void OnGUI(){
GUILayout.Label (PhotonNetwork.connectionStateDetailed.ToString ());
}
}
Мой серверный код:
<?php
include "db.php";
$username = $_GET['username'];
$password = $_GET['password'];
$check = mysqli_query($conn , "SELECT * FROM accounts WHERE `username`='".$username."'");
$numrows = mysqli_num_rows($check);
if ($numrows == 0){
die ("Username does not exist.");
}else{
$password = md5($password);
while($row = mysqli_fetch_assoc($check)){
if ($password == $row['password']){
$login_info = array(
"ResultCode" => 1,
"Message" => "You are connected!");
}else{
$login_info = array(
"ResultCode" => 2,
"Message" => "Wrong username or password");
}
}
}
$json = json_encode($login_info);
echo $json;
?>
В фотонную панель я поместил Url mydomain / auth.php и не добавил никаких дополнительных пар ключ / значение
Я не знаю, в чем проблема, если кто-нибудь знает
Я ответил на нашем форуме. Публикуем тоже самое здесь:
Буква «U» — это намек на то, что это может быть «Имя пользователя не существует».
замещать
die ("Username does not exist.");
с
$login_info = array(
"ResultCode" => 3,
"Message" => "Username does not exist.");
Если проблема не устранена, используйте почтальон и отправьте HTTP-запрос с правильными значениями строки запроса на ваш сервер и посмотрите, что он возвращает. Исправь это.
Других решений пока нет …