Die Inventory API ermöglicht Ihnen den Zugriff auf die meisten der gleichen Informationen wie die Roblox Mein Inventar-Seite. Sie können überprüfen, ob ein Benutzer einzelne Elemente besitzt, und die vollständige Liste der Elemente abrufen, die ein Spieler besitzt.
Antworten von der Inventory API enthalten Elemente aus den folgenden Kategorien:
- Kleidung (Zubehör, Hosen, klassische Kleidung, Schuhe, Oberteile)
- Käufe und Belohnungen (Abzeichen, Pässe, gekaufte Orte, private Server)
- Avatar-Elemente (Avatar-Animationen, klassische Köpfe, Emotes, Gesichter, Haare, Köpfe)
Bevor Sie die Inventory API verwenden, müssen Sie einen API-Schlüssel generieren oder OAuth 2 konfigurieren für Ihre App. Die Beispiele auf dieser Seite verwenden API-Schlüssel.
Überprüfen des Eigentums an Elementen
Wenn Sie überprüfen möchten, ob ein Benutzer ein bestimmtes Element besitzt (zum Beispiel ein limitiertes Element, Abzeichen, einen Pass oder einen privaten Server), verwenden Sie den filter-Parameter, um eine durch Kommas getrennte Liste von einer oder mehreren IDs zu überprüfen. Dieses Codebeispiel überprüft drei Asset-IDs:
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);
});
Die folgende Antwort zeigt an, dass der Benutzer eines der drei Elemente besitzt:
{
"inventoryItems": [
{
"path": "users/11111111111/inventory-items/VVNFUl9BU1NFVF9JRD0yMDAxMDUxMTkzODg",
"assetDetails": {
"assetId": "1028595",
"inventoryItemAssetType": "CLASSIC_TSHIRT",
"instanceId": "200105119388"
}
}
],
"nextPageToken": ""
}
Filterelemente
Wenn Sie zum Beispiel nur die Sammlerstücke anzeigen möchten, die ein Benutzer besitzt, verwenden Sie denselben Code wie oben, jedoch mit einem anderen filter-Parameter.
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
Kombinieren Sie Filter mithilfe einer durch Semikolons getrennten Liste. Hier sind einige Beispiele:
filter=onlyCollectibles=true;inventoryItemAssetTypes=HAT,CLASSIC_PANTSfilter=badgeIds=111111,222222;gamePassIds=777777;privateServerIds=999999filter=gamePasses=true;badges=true
Die meisten API-Aufrufe erfordern keine spezifischen Berechtigungen, aber mehrere Filter erfordern Inventar-Lese-Berechtigungen. Für weitere Informationen siehe Filtern.
Ergebnisse paginieren
Wenn eine Antwort einen Wert für nextPageToken enthält, verwenden Sie diesen Wert im pageToken-Parameter der nachfolgenden Anfrage, um die nächste Seite abzurufen. Für weitere Informationen siehe Paginierung.
Wenn die Anzahl der Ergebnisse durch maxPageSize teilbar ist (zum Beispiel, Sie haben 50 Ergebnisse und eine maxPageSize von 25), können Sie auf eine Situation stoßen, in der Ihre Antwort einen Wert für nextPageToken enthalten kann, aber eine Anfrage mit diesem Token keine Ergebnisse zurückgibt:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
Bei der Implementierung der Paginierung in Ihrer App ist es am besten, nicht nur auf einen nicht-leeren nextPageToken zu überprüfen, sondern auch auf ein nicht-leeres inventoryItems-Array.