Как взаимодействовать с XBox API с помощью PHP и cURL

Я пытаюсь научиться взаимодействовать с неофициальным xbox api (xboxapi.com), но я не могу понять, как его использовать. Документация очень скудная. Это моя самая недавняя (и то, что я думал лучше).

<?php $gamertag = rawurlencode("Major Nelson"); $ch = curl_init("http://www.xboxapi.com/v2/xuid/" . $gamertag); $headers = array('X-Auth: InsertAuthCodeHere', 'Content-Type: application/json'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 ); # return into a variable curl_setopt($ch, CURLOPT_HTTPHEADER, $headers ); # custom headers, see above $xuid = curl_exec( $ch ); # run! curl_close($ch); echo $xuid; ?> 

При запуске выше я получаю «301 перемещен навсегда». Может ли кто-нибудь увидеть, что я делаю неправильно? Благодарю.

Вам нужно заменить xuid на ваш фактический идентификатор пользователя xbox. Кроме того, замените InsertAuthCodeHere вашим API-кодом. Вы можете найти их в своем профиле учетной записи xboxapi после входа в xbox live.

См. https://xboxapi.com/v2/2533274813081462/xboxonegames.


Обновление – Гузл

Я смог заставить его работать с Guzzle , работает с http или https

 require __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/config.php'; //defines XboxAPI_Key $gamertag = isset($_GET['gamertag']) ? urldecode($_GET['gamertag']) : 'Major Nelson'; $url = 'http://xboxapi.com/v2/xuid/' . rawurlencode($gamertag); $guzzle = new GuzzleHttp\Client(); $response = $guzzle->get($url, [ 'headers' => [ 'X-Auth' => XboxAPI_Key, 'Content-Type' => 'application/json' ], ]); echo $response->getBody(); //2584878536129841 

Обновление 2 – cURL

Эта проблема связана с проверкой сертификата SSL через CURLOPT_SSL_VERIFYPEER => false и перенаправлением с http://www. к https:// происходит, что включено с CURLOPT_FOLLOWLOCATION => true

 require_once __DIR__ . '/config.php'; $gamertag = isset($_GET['gamertag']) ? urldecode($_GET['gamertag']) : 'Major Nelson'; $url = 'http://www.xboxapi.com/v2/xuid/' . rawurlencode($gamertag); /** * proper url for no redirects * $url = 'https://xboxapi.com/v2/xuid/' . rawurlencode($gamertag); */ $options = [ CURLOPT_RETURNTRANSFER => true, // return variable CURLOPT_FOLLOWLOCATION => true, // follow redirects CURLOPT_AUTOREFERER => true, // set referrer on redirect CURLOPT_SSL_VERIFYPEER => false, //do not verify SSL cert CURLOPT_HTTPHEADER => [ 'X-Auth: ' . XboxAPI_Key ] ]; $ch = curl_init($url); curl_setopt_array($ch, $options); $content = curl_exec($ch); echo $content; //2584878536129841 

Я получил ответ. Нам не хватало необходимых фигурных скобок. Рабочий код:

 $gamertag = rawurlencode("Major Nelson"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,"https://xboxapi.com/v2/xuid/{$gamertag}"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "X-Auth: InsertAuthCode", ]); $output = curl_exec($ch); curl_close ($ch); print $output;