You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Fortnite Tracker API拉取近期对局数据失败的PHP求助

排查Fortnite Tracker API无法拉取近期对局数据的问题

我来帮你一步步排查这个问题,结合Fortnite Tracker API的特性和你的PHP代码情况,可能有以下几个常见原因和解决办法:


1. 首先确认API端点是否用错

你当前调用的/v1/profile/psn/mygamertag端点,仅返回用户的整体统计数据(比如总击杀、胜率等),并不包含近期对局记录。要获取近期对局,需要调用专门的Matches端点:

https://api.fortnitetracker.com/v1/matches/psn/mygamertag

2. 检查API Key的请求头是否正确配置

Fortnite Tracker API强制要求携带TRN-Api-Key请求头,很多人会遗漏这一步或者使用无效的Key。你的代码片段里没看到相关配置,这大概率是核心问题之一。正确的curl请求头设置应该是:

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'TRN-Api-Key: 你的API密钥',
    'Accept: application/json'
));

注意:API Key需要在Fortnite Tracker开发者平台申请,确保Key未过期、未被禁用,且调用次数未超限(免费版有请求频率限制)。

3. 补全curl的必要配置

你的代码片段里curl_setopt未写完,需要确保开启CURLOPT_RETURNTRANSFER(让curl返回响应内容而不是直接输出),同时建议添加错误检查:

// 开启返回响应内容
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 可选:生产环境建议开启SSL验证,开发阶段可临时关闭(不推荐)
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 执行请求后检查错误
$response = curl_exec($ch);
if(curl_errno($ch)){
    echo "Curl请求错误: " . curl_error($ch);
    exit;
}
// 检查HTTP状态码,快速定位问题
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

4. 验证响应内容与JSON解析

拿到响应后,先直接输出原始内容,确认API返回的是预期数据还是错误信息:

echo $response;

常见的错误状态码对应问题:

  • 401:API Key无效或未设置
  • 404:游戏ID或平台参数错误
  • 429:请求频率超限
  • 200:请求成功,但可能返回空的对局数组(比如用户近期无对局)

如果返回的是JSON,要确保正确解析并检查matches字段是否存在:

$data = json_decode($response, true);
if(json_last_error() !== JSON_ERROR_NONE){
    echo "JSON解析错误: " . json_last_error_msg();
    exit;
}
// 检查对局数据是否存在
if(isset($data['matches']) && !empty($data['matches'])){
    // 处理并导出对局数据
    file_put_contents('recent_matches.json', json_encode($data['matches'], JSON_PRETTY_PRINT));
} else {
    echo "未获取到近期对局数据,可能用户暂无对局或API结构变更";
}

完整修正后的示例代码

<?php
$apiKey = '你的TRN API密钥';
$gamertag = 'mygamertag';
$platform = 'psn';

// 调用正确的对局数据端点
$url = "https://api.fortnitetracker.com/v1/matches/{$platform}/{$gamertag}";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "TRN-Api-Key: {$apiKey}",
    "Accept: application/json"
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);

curl_close($ch);

// 排查请求错误
if ($error) {
    die("Curl请求失败: {$error}");
}

// 根据HTTP状态码处理结果
switch ($httpCode) {
    case 200:
        $data = json_decode($response, true);
        if (json_last_error() !== JSON_ERROR_NONE) {
            die("JSON解析失败: " . json_last_error_msg());
        }
        if (isset($data['matches']) && !empty($data['matches'])) {
            file_put_contents('recent_matches.json', json_encode($data['matches'], JSON_PRETTY_PRINT));
            echo "近期对局数据已成功导出";
        } else {
            echo "该用户暂无近期对局记录";
        }
        break;
    case 401:
        die("权限验证失败:请检查你的API Key是否正确");
    case 404:
        die("用户不存在:请确认平台和游戏ID是否正确");
    case 429:
        die("请求超限:请稍后再试,或升级API套餐");
    default:
        die("请求失败,状态码: {$httpCode},响应内容: {$response}");
}
?>

内容的提问来源于stack exchange,提问作者Matt Hutch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:38:19