API Hệ thống hàng hóa cho phép bạn truy cập hầu hết các thông tin giống như trên trang Hệ thống hàng hóa của tôi của Roblox. Bạn có thể kiểm tra xem người dùng có sở hữu các món hàng riêng lẻ và lấy danh sách đầy đủ các món hàng mà một người chơi sở hữu.
Các phản hồi từ API Hệ thống hàng hóa bao gồm các mặt hàng từ các danh mục sau:
- Thời trang (phụ kiện, quần, quần áo cổ điển, giày, áo)
- Mua sắm và phần thưởng (huy hiệu, thẻ, địa điểm đã mua, máy chủ riêng)
- Mặt hàng avatar (hoạt ảnh avatar, đầu cổ điển, biểu cảm, gương mặt, tóc, đầu)
Trước khi sử dụng API Hệ thống hàng hóa, bạn phải tạo một khóa API hoặc cấu hình OAuth 2 cho ứng dụng của bạn. Các ví dụ trên trang này sử dụng khóa API.
Kiểm tra quyền sở hữu món hàng
Nếu bạn muốn kiểm tra xem một người dùng sở hữu một món hàng cụ thể (ví dụ: một món hàng giới hạn, huy hiệu, thẻ, hoặc máy chủ riêng), hãy sử dụng tham số filter để kiểm tra danh sách ID được phân tách bằng dấu phẩy gồm một hoặc nhiều ID. Mẫu mã sau đây kiểm tra ba ID tài sản:
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);
});
Phản hồi sau đây cho thấy rằng người dùng sở hữu một trong ba món hàng:
{
"inventoryItems": [
{
"path": "users/11111111111/inventory-items/VVNFUl9BU1NFVF9JRD0yMDAxMDUxMTkzODg",
"assetDetails": {
"assetId": "1028595",
"inventoryItemAssetType": "CLASSIC_TSHIRT",
"instanceId": "200105119388"
}
}
],
"nextPageToken": ""
}
Lọc hàng hóa
Nếu bạn muốn hiển thị, ví dụ, chỉ các món sưu tầm mà một người dùng sở hữu, hãy sử dụng mã giống như trên, chỉ cần với tham số filter khác.
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
Kết hợp và phối hợp các bộ lọc bằng cách sử dụng danh sách được phân tách bằng dấu chấm phẩy. Dưới đây là một số ví dụ:
filter=onlyCollectibles=true;inventoryItemAssetTypes=HAT,CLASSIC_PANTSfilter=badgeIds=111111,222222;gamePassIds=777777;privateServerIds=999999filter=gamePasses=true;badges=true
Hầu hết các cuộc gọi đến API không yêu cầu quyền cụ thể nào, nhưng một số bộ lọc yêu cầu quyền đọc Hệ thống hàng hóa. Để biết thêm thông tin, xem Lọc.
Phân trang kết quả
Nếu phản hồi bao gồm giá trị cho nextPageToken, hãy sử dụng giá trị đó trong tham số pageToken của yêu cầu tiếp theo để lấy trang tiếp theo. Để biết thêm thông tin, xem Phân trang.
Nếu số lượng kết quả chia hết cho maxPageSize (ví dụ: bạn có 50 kết quả và maxPageSize là 25), bạn có thể gặp tình huống mà phản hồi của bạn bao gồm giá trị cho nextPageToken, nhưng yêu cầu sử dụng token đó không trả về kết quả nào:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
Khi triển khai phân trang trong ứng dụng của bạn, thực tiễn tốt nhất là không chỉ kiểm tra một nextPageToken không rỗng, mà còn kiểm tra một mảng inventoryItems không rỗng.