2016-07-27 5 views
3

J'essaie d'apprendre à interagir avec l'API xbox non officielle (xboxapi.com) mais je n'arrive pas à comprendre comment l'utiliser. La documentation est très rare. C'est ma tentative la plus récente (et ce que je pensais le mieux).Comment interagir avec l'API XBox en utilisant PHP et cURL

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


?> 

En exécutant ce qui précède, je reçois "301 déplacé de façon permanente". Quelqu'un peut-il voir ce que je fais mal? Merci.

+0

tous les exemples semblent être 'https' – RamRaider

+0

@RamRaider Ce fut une bonne observation, mais il ne fonctionne toujours pas même après avoir changé à https. – Tristan

+0

avez-vous essayé 'https: // xboxapi.com/v2/accountXuid /' plutôt que 'http: // www.xboxapi.com/v2/xuid /'? semble le plus proche – RamRaider

Répondre

2

Vous devez remplacer xuid par votre identifiant utilisateur de profil xbox. En outre remplacer InsertAuthCodeHere avec votre code d'autorisation API. Vous pouvez trouver les deux sur votre profil de compte xboxapi après vous être connecté à xbox live.

Voir: https://xboxapi.com/v2/2533274813081462/xboxonegames


Mise à jour - Guzzle

j'ai pu le faire fonctionner avec Guzzle, travaille avec http ou 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 

Mise à jour 2 - cURL

Le problème est lié à la validation du certificat SSL via CURLOPT_SSL_VERIFYPEER => false et la redirection de http://www. à https:// qui est activé se produisant avec 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 
+0

J'essaie de obtenir le XUID des utilisateurs quand je ne connais que leur gamertag. – Tristan

+0

Vous avez, alors vous devrez remplacer 'InsertAuthCodeHere' avec votre clé API de votre profil. – fyrye

+0

J'ai. Je l'ai juste enlevé de la poste pour le garder privé. – Tristan

0

Je suis une réponse. Il nous manquait les accolades nécessaires. Code de travail:

$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; 
+0

Les accolades n'affecteront pas le résultat de l'URL. L'URL sans 'www.' ... était votre problème, comme je l'ai noté dans ma réponse. EG: '" a ". $ gamertag' est la même chose que '" a $ gamertag "' est la même chose que '" a {$ gamertag} "' Voir: http://ideone.com/rNeinC – fyrye