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