Envanter API'si Roblox My Inventory sayfasındaki aynı bilgilerin çoğuna erişmenizi sağlar.Bir kullanıcının bireysel öğelere sahip olup olmadığını kontrol edebilir ve bir oyuncunun sahip olduğu tüm öğelerin listesini alabilirsiniz.
Envanter API'sinden yanıtlar, aşağıdaki kategorilerden öğeleri içerir:
- Giysiler (aksesuarlar, altlar, klasik giysiler, ayakkabılar, üstler)
- Satın alımlar ve ödüller (badge'ler, geçişler, satın alınan yerler, özel sunucular)
- Avatar öğeleri (avatar animasyonları, klasik başlar, ifadeler, yüzler, saçlar, başlar)
Envanter API'sini kullanmadan önce, uygulamanız için bir API anahtarı oluşturmanız veya OAuth 2'yi yapılandırmanız gerekir.Bu sayfadaki örnekler API anahtarlarını kullanır.
Eşya sahipliğini kontrol et
Bir kullanıcının belirli bir öğeye sahip olup olmadığını kontrol etmek istiyorsanız (örneğin, sınırlı, rozet, biletveya özel bir sunucu), bir virgülle ayrılmış bir liste için bir veya daha fazla kimlik kontrol etmek için filter parametresini kullanın.Bu kod örneği üç varlık kimliğini kontrol eder:
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);
});
Aşağıdaki yanıt, kullanıcının üç öğeden birini sahip olduğunu gösterir:
{
"inventoryItems": [
{
"path": "users/11111111111/inventory-items/VVNFUl9BU1NFVF9JRD0yMDAxMDUxMTkzODg",
"assetDetails": {
"assetId": "1028595",
"inventoryItemAssetType": "CLASSIC_TSHIRT",
"instanceId": "200105119388"
}
}
],
"nextPageToken": ""
}
Eşyaları filtrele
Örneğin, sadece bir kullanıcının sahip olduğu koleksiyonları göstermek istiyorsanız, aynı kodu kullanın, sadece farklı bir filter parametre ile.
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
Semikolonla ayrılmış bir listeden karışık ve eşleştirme filtreleri kullanın. İşte birkaç örnek:
filter=onlyCollectibles=true;inventoryItemAssetTypes=HAT,CLASSIC_PANTSfilter=badgeIds=111111,222222;gamePassIds=777777;privateServerIds=999999filter=gamePasses=true;badges=true
API'ye yapılan çoğu çağrı belirli izinlere ihtiyaç duymaz, ancak birkaç filtre envanter okuma izni gerektirir.Daha fazla bilgi için, Filtreleme bakın.
Sonuçları sayfalara ayır
Bir yanıt nextPageToken için bir değer içeriyorsa, bir sonraki istekte bir sonraki sayfayı almak için bu değeri pageToken parametresinde kullanın.Daha fazla bilgi için, Sayfa gezintisi bakın.
Sonuç sayısı maxPageSize (örneğin, 50 sonuç ve 25'in bir maxPageSize 'i var) için bölünebilirse, yanıtın nextPageToken için bir değer içerdiği bir durumla karşılaşabilirsiniz, ancak bu jetonu kullanan bir istek hiçbir sonuç dönmez:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
App'inizde sayfa numaralandırmasını uygularken, en iyi uygulama sadece boş olmayan bir ve boş olmayan bir dize kontrol etmek değil, ayrıca boş olmayan bir dize kontrol etmektir.