インベントリAPIを使用すると、Robloxのマイインベントリページと同じ情報のほとんどにアクセスできます。ユーザーが個々のアイテムを所有しているかどうかを確認し、プレイヤーが所有するアイテムの完全なリストを取得できます。
インベントリAPIからの応答には、以下のカテゴリのアイテムが含まれます:
- 服(アクセサリー、ボトム、クラシック衣服、靴、トップ)
- 購入と報酬(バッジ、パス、購入した場所、プライベートサーバー)
- アバターアイテム(アバターアニメーション、クラシックヘッド、エモート、顔、髪、頭)
インベントリAPIを使用する前に、APIキーを生成するか、OAuth 2を構成する必要があります。このページの例ではAPIキーを使用します。
アイテムの所有確認
ユーザーが特定のアイテム(たとえば、リミテッド、バッジ、パス、またはプライベートサーバー)を所有しているかどうかを確認したい場合は、filterパラメータを使用して、1つ以上の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);
});
以下の応答は、ユーザーが3つのアイテムのうちの1つを所有していることを示しています:
{
"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配列も確認することです。