Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用PHP和cURL与XBox API交互_Php_Curl - Fatal编程技术网

如何使用PHP和cURL与XBox API交互

如何使用PHP和cURL与XBox API交互,php,curl,Php,Curl,我试图学习如何与非官方的xboxapi(xboxapi.com)交互,但我似乎不知道如何使用它。文件非常稀少。这是我最近(也是我认为最好的)一次尝试 运行上述命令后,我会得到“301永久移动”。有人能看出我做错了什么吗?谢谢。您需要将xuid替换为实际的xbox配置文件用户id。 另外,将InsertAuthCodeHere替换为API验证代码。 登录xbox live后,您可以在您的xbox API帐户配置文件中找到这两个帐户 见: 更新-狂饮 我能够使用它,使用http或https r

我试图学习如何与非官方的xboxapi(xboxapi.com)交互,但我似乎不知道如何使用它。文件非常稀少。这是我最近(也是我认为最好的)一次尝试



运行上述命令后,我会得到“301永久移动”。有人能看出我做错了什么吗?谢谢。

您需要将
xuid
替换为实际的xbox配置文件用户id。 另外,将
InsertAuthCodeHere
替换为API验证代码。 登录xbox live后,您可以在您的xbox API帐户配置文件中找到这两个帐户

见:


更新-狂饮

我能够使用它,使用
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

该问题与通过
CURLOPT_SSL\u VERIFYPEER=>false
验证SSL证书以及从
http://www.
https://
发生,通过
CURLOPT\u 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;

所有示例似乎都是
https
@RamRaider,这是一个很好的观察结果,但即使将其更改为https,它仍然不起作用。您尝试过
https://xboxapi.com/v2/accountXuid/
而不是
http://www.xboxapi.com/v2/xuid/
?似乎closest@RamRaideraccountXuid用于返回我已链接到API的个人Xbox帐户的XUID。哦,是的,我现在在文档中看到了端点。使用
https://xboxapi.com/v2/xuid/Major%20Nelson
给了我一个关于
未提供API密钥或API密钥无效的错误
当我只知道用户的玩家代号时,我正在尝试获取用户的XUID。明白了,那么您需要用您的配置文件中的API密钥替换
InsertAuthCodeHere
。我有。我只是将其从帖子中删除以保持其私密性。因为这是一个XenForo插件,在一个我无法控制的web主机上,我认为我不能使用Guzzle。除非我误解了。不确定XenForo的范围,或者您将如何使用它部署应用程序。我正在研究您的cUrl请求的具体问题,因为除了
Guzzle
cUrl
之外,应该不会有太多的变化。花括号不会影响url的结果。没有
www.
的URL。。。正如我在回答中指出的,这是你的问题。例如:
“a”$玩家代号
“a$gamertag”
“a{$gamertag}”相同
请参见:
$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;