function generateMojangAccount($mojangResponse) { $accessToken = $mojangResponse['accessToken']; $clientToken = $mojangResponse['clientToken']; $mojandProfile = $mojangResponse['selectedProfile']; $licenseUUID = $mojandProfile['id']; $licenseName = $mojandProfile['name']; // Обновление в БД $insert = registerLicenseUUID($licenseUUID, $licenseName); $uuid = $insert['uuid']; $name = $insert['name']; replaceToken($uuid, $clientToken, $accessToken); return array("uuid" => $uuid, "name" => $name, "clientToken" => $clientToken, "accessToken" => $accessToken, "provider" => "mojang", "role" => "player"); }
$serverHash = filter_input(INPUT_GET, 'serverId', FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH) or responseWithError("Method Not Allowed", "Good bye."); $uuid = null; $properties = null; // Проверка входа на сервер через лицензионный лаунчер $mojangRequest = http_build_query(array("username" => $name, "serverId" => $serverHash)); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://sessionserver.mojang.com/session/minecraft/hasJoined' . '?' . $mojangRequest); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $mojangResponse = curl_exec($ch); if (curl_errno($ch) == 0) { curl_close($ch); $mojangResponse = json_decode($mojangResponse, true); if (isset($mojangResponse['id'])) { // Было обнаружено, что игрок пытается зайти в игру через лицензионные лаунчер и учётную запись $insert = registerLicenseUUID($mojangResponse['id'], $name); $uuid = $insert['uuid']; $name = $insert['name']; $properties = $mojangResponse['properties']; // Сообщаю системе, что игрок авторизовался через официальный лаунчер updateProvider($uuid, 'mojang', false); } } // Выдернуть информацию о игроке из нашей системы if ($uuid === null) { $query = "SELECT `uuid`, `accessToken`" . " FROM `authserver`.`account_server_joins` AS `j`" . " JOIN `authserver`.`account_access_tokens` AS `t` USING(`accessToken`)" . " WHERE `j`.`serverHash` = '{$serverHash}';"; $result = $authserver->query($query) or responseWithError("InternalDatabaseError", $authserver->error); if ($result->num_rows == 1) { // Информация найдена $row = $result->fetch_assoc(); $uuid = $row['uuid'];