API Inventarza umożliwia dostęp do większości tych samych informacji co strona Mój ekwipunek . Możesz sprawdzić, czy użytkownik posiada pojedyncze pozycje i odzyskać pełną listę przedmiotów, które posiada gracz.
Odpowiedzi z API Inventarza zawierają przedmioty z następujących kategorii:
- Ubrania (akcesoria, spodnie, klasyczne ubranie, buty, topy)
- Zakupy i nagrody (oddznaki, przepustki, zakupione miejsca, prywatne serwery)
- Przedmioty dla awatara (animacje awatara, klasyczne głowy, emotki, twarze, włosy, głowy)
Przed użyciem API Inventori musisz Generuj klucz API lub Konfiguruj OAuth 2 dla swojego aplikacja. Przykłady na tej stronie używają kluczy API.
Sprawdzanie własności przedmiotu
Jeśli chcesz sprawdzić, czy użytkownik posiada określony przedmiot (na przykład, ograniczony, odznaka, bilecik lub prywatny serwer), użyj parametru filter , aby sprawdzić czy jest to kompletna lista jednego lub więcej ID. Ten przykładowy kod sprawdza trzy ID 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('Error:', 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 elementów
Jeśli chcesz wyświetlić, na przykład, tylko zbierki, które posiada użytkownik, użyj tego samego kodu, co powyżej, tylko z innym parametrem filter.
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
Miksuj i dopasuj filtry używając oddzielnej listy semikolonów. 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ść wezwów do API nie wymaga żadnych szczegółowych uprawnień, ale kilka filtrów wymaga dostępu do czytania zapisu. Dla więcej informacji, see Filtrowanie .
Paganie wyników
Jeśli odpowiedź zawiera wartość dla nextPageToken , użyj tej wartości w parametrze pageToken następnego wniosku, aby odzyskać następną stronę. Aby uzyskać więcej informacji, zobacz Pagination.
Jeśli liczba wyników jest dzielna przez maxPageSize (na przykład, masz 50 wyników i maxPageSize z 25), możesz napotkać sytuację, w której twoja odpowiedź zawiera wartość dla nextPageToken , ale wniosek używający tego tokenu nie powoduje rezultatów:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
Podczas wdrożenia paginacji w swojej aplikacjanajlepiej jest sprawdzić nie tylko dla pustego nextPageToken , ale również dla pustego inventoryItems zapisu.