ユーザーインベントリ

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

インベントリ 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_PANTS
filter=badgeIds=111111,222222;gamePassIds=777777;privateServerIds=999999
filter=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": ""
}

アプリでページネーションを実装するとき、ベストプラクティスは、非空の nextPageToken だけでなく、非空の inventoryItems 配列もチェックすることです。