库存API 可让您访问 Roblox 我的库存 页面的大部分信息。您可以检查用户是否拥有单个物品,并检索玩家拥有的全部物品列表。
来自 库存 API 的响应包括以下类别的物品:
- 服装(配件、底部、经典服装、鞋子、衬衫)
- 购买和奖励(徽章、通行证、购买地点、私人服务器)
- 虚拟形象物品(虚拟形象动画、经典头部、表情、脸部、头发、头部)
在使用 库存 API 之前,您必须生成 API 密钥 或 配置 OAuth 2 以适应您的应用程App。本页面上的示例使用 API 钥匙。
检查物品所有权
如果您想检查用户是否拥有特定物品(例如,限量、徽章、通行游戏通行证或私有服务器),使用 filter 参数检查一个或多个ID列表的分号分开。这段代码示例检查三个资产 ID:
const https = require('node:https');
const userId = 11111111111;
const hostname = 'apis.roblox.com';
const path = `/cloud/v2/users/${userId}/inventory-items`;
const params = '?filter=assetIds=62724852,1028595,4773588762';
const url = 'https://' + hostname + path + params;
const apiKey = '123456789012345678901234567890123456789012345678';
const options = {
headers: {
'x-api-key': `${apiKey}`,
},
};
https
.get(url, options, (response) => {
console.log('statusCode:', response.statusCode);
let data = '';
response.on('data', (d) => {
data += d;
});
response.on('end', () => {
if (response.statusCode === 200) {
const jsonData = JSON.parse(data);
console.log('Response Data:', JSON.stringify(jsonData, null, 2));
} else {
console.error('Error:', response.statusCode, response.statusMessage);
}
});
})
.on('error', (e) => {
console.error(e);
});
以下响应表示用户拥有三件物品之一:
{
"inventoryItems": [
{
"path": "users/11111111111/inventory-items/VVNFUl9BU1NFVF9JRD0yMDAxMDUxMTkzODg",
"assetDetails": {
"assetId": "1028595",
"inventoryItemAssetType": "CLASSIC_TSHIRT",
"instanceId": "200105119388"
}
}
],
"nextPageToken": ""
}
过滤项目
如果你想显示,例如,只有用户拥有的收藏品,使用与上述相同的代码,只是参数不同filter。
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
使用分号分开的列表混合匹配过滤器。以下是一些例子:
filter=onlyCollectibles=true;inventoryItemAssetTypes=HAT,CLASSIC_PANTSfilter=badgeIds=111111,222222;gamePassIds=777777;privateServerIds=999999filter=gamePasses=true;badges=true
API的大多数调用不需要任何特定权限,但几个过滤器需要阅读库存权限。了解更多信息,请参阅过滤。
页面化结果
如果响应包含 nextPageToken 的值,请在后续请求的 pageToken 参数中使用该值来检索下一页。了解更多信息,请参阅页面分割。
如果结果数可以分割为 maxPageSize (例如,你有 50 个结果和一个 maxPageSize 的 25),你可能会遇到情况,你的回应包含一个值为 nextPageToken 的值,但使用该代币发出的请求无结果返回:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
当在您的应用程序中实现页面时,最佳实践是检查不仅仅为非空 nextPageToken 列表,还为非空 inventoryItems 阵列。