PHP Curl Request возвращает «Пустой ответ от сервера» при отправке данных на OAUTH сервер - PullRequest
0 голосов
/ 19 июня 2019

Проблема в том, что возникает ошибка - «Пустой ответ с сервера» появляется, когда я выполняю следующий код PHP, чтобы попытаться запросить некоторые данные с их сервера

Я пытался изменить данные, удалив часть 'http_build_query' вокруг строки. После этого запрос отправляется, но серверу не нравятся данные, поэтому я должен поставить 'http_build_query'. Мне нужна программа для возврата другого сообщения вместо следующего

Empty reply from server

ИЛИ

{ "errorCode" : "errors.com.epicgames.common.oauth.unsupported_grant_type", "errorMessage" : "Unsupported grant type: null", "messageVars" : [ ], "numericErrorCode" : 1016, "originatingService" : "com.epicgames.account.public", "intent" : "prod", "error_description" : "Unsupported grant type: null", "error" : "unsupported_grant_type" }

=> Это происходит, когда нет http_build_query.

Минимальный код для воспроизведения проблемы:

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$data = http_build_query(array(
 'grant_type' => "password",
 'username' => "<EMAIL>",
 'password' => "<PASSWORD>",
 'includePerms' => true
));
/* Public Auth Client Token */
$headers = [
    'Authorization: basic MzQ0NmNkNzI2OTRjNGE0NDg1ZDgxYjc3YWRiYjIxNDE6OTIwOWQ0YTVlMjVhNDU3ZmI5YjA3NDg5ZDMxM2I0MWE=',
    'Content-type: application/x-www-form-urlencoded',
    'Content-Length: 100',
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,"https://account-public-service-prod03.ol.epicgames.com/account/api/oauth/token");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);  //Post Fields
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
/*curl_setopt($ch, CURLOPT_TIMEOUT, 5);*/

$server_output = curl_exec ($ch);
if (curl_error($ch)) {
    $error_msg = curl_error($ch);
    echo($error_msg);
}

curl_close ($ch);
print  $server_output ;
?>

Ожидаемый результат - что-нибудь вместо двух уже показанных сообщений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...