Inventory API를 사용하면 Roblox 내 인벤토리 페이지에서 동일한 정보에 액세스할 수 있습니다. 사용자가 개별 항목을 소유하고 있는지 여부를 확인하고 플레이어가 소유한 모든 항목의 전체 목록을 검색할 수 있습니다.
인벤토리 API에서 응답하는 항목에는 다음과 같은 카테고리의 아이템이 포함됩니다.
- 의류(액세서리, 바지, 클래식 복장, 신발, 상의)
- 구매 및 보상(배지, 패스, 구매한 장소, 개인 서버)
- 아바타 아이템(아바타 애니메이션, 클래식 머리, 이모티콘, 얼굴, 헤어, 머리)
인벤토리 API를 사용하기 전에 앱대해 API 키를 생성하거나 OAuth 2를 구성해야 합니다. 이 페이지의 예시는 API 키를 사용합니다.
항목 소유권 확인
사용자가 특정 아이템을 소유하고 있는지 여부를 확인하려면 filter 매개 변수를 사용하여 콤마 구분 목록의 하나 이상의 ID를 확인하십시오. 이 코드 샘플은 3개의 자산 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개의 결과가 있고 25개의 maxPageSize 가 있는 경우) 분할할 수 있으므로 응답에 대한 값이 nextPageToken 이지만 해당 토큰을 사용하는 요청은 결과를 반환하지 않는 경우가 있습니다.
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
앱에 페이지 번호를 구현할 때 가장 좋은 방법은 비어 있지 않은 페이지 번호 만 확인하는 것이 아니라 비어 있지 않은 페이지 배열 만 확인하는 것입니다.When implementing pagination in your app, best practice is to check not just for a non-empty nextPageToken , but also for a non-empty inventoryItems array.