API Inwentarza pozwala uzyskać dostęp do większości tych samych informacji, co strona Roblox Mój inwentarz. Możesz sprawdzić, czy użytkownik posiada poszczególne przedmioty oraz pobrać pełną listę przedmiotów, które posiada gracz.
Odpowiedzi z API Inwentarza zawierają przedmioty z następujących kategorii:
- Odzież (akcesoria, dolne części, klasyczne ubrania, buty, górne części)
- Zakupy i nagrody (odznaki, przepustki, zakupione miejsca, serwery prywatne)
- Przedmioty awatara (animacje awatara, klasyczne głowy, emocje, twarze, włosy, głowy)
Przed użyciem API Inwentarza musisz wygenerować klucz API lub skonfigurować OAuth 2 dla swojej aplikacji. Przykłady na tej stronie korzystają z kluczy API.
Sprawdzenie własności przedmiotu
Jeśli chcesz sprawdzić, czy użytkownik posiada dany przedmiot (na przykład ograniczony, odznakę, przepustkę lub serwer prywatny), użyj parametru filter, aby sprawdzić listę ID oddzieloną przecinkami. Ten przykład kodu sprawdza trzy identyfikatory zasobów:
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('Błąd:', response.statusCode, response.statusMessage);
}
});
})
.on('error', (e) => {
console.error(e);
});
Poniższa odpowiedź wskazuje, że użytkownik posiada jeden z trzech przedmiotów:
{
"inventoryItems": [
{
"path": "users/11111111111/inventory-items/VVNFUl9BU1NFVF9JRD0yMDAxMDUxMTkzODg",
"assetDetails": {
"assetId": "1028595",
"inventoryItemAssetType": "CLASSIC_TSHIRT",
"instanceId": "200105119388"
}
}
],
"nextPageToken": ""
}
Filtrowanie przedmiotów
Jeśli chcesz wyświetlić, na przykład, tylko kolekcjonerskie przedmioty, które posiada użytkownik, użyj tego samego kodu co powyżej, tylko z innym parametrem filter.
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
Łącz filtry, używając listy oddzielonej średnikami. Oto kilka przykładów:
filter=onlyCollectibles=true;inventoryItemAssetTypes=HAT,CLASSIC_PANTSfilter=badgeIds=111111,222222;gamePassIds=777777;privateServerIds=999999filter=gamePasses=true;badges=true
Większość wywołań API nie wymaga żadnych szczególnych uprawnień, ale kilka filtrów wymaga uprawnień do odczytu inwentarza. Aby uzyskać więcej informacji, zobacz Filtrowanie.
Stronicowanie wyników
Jeśli odpowiedź zawiera wartość dla nextPageToken, użyj tej wartości w parametrze pageToken kolejnego żądania, aby pobrać następną stronę. Aby uzyskać więcej informacji, zobacz Stronicowanie.
Jeśli liczba wyników jest podzielna przez maxPageSize (na przykład masz 50 wyników i maxPageSize wynosi 25), możesz napotkać sytuację, w której Twoja odpowiedź zawiera wartość dla nextPageToken, ale żądanie z użyciem tego tokena nie zwraca żadnych wyników:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
Podczas implementowania stronicowania w swojej aplikacji, najlepszą praktyką jest sprawdzenie nie tylko, czy nextPageToken nie jest pusty, ale także, czy tablica inventoryItems nie jest pusta.