Envanter API'si, Roblox'un Envanterim sayfasındaki aynı bilgilere erişmenizi sağlar. Bir kullanıcının belirli öğelere sahip olup olmadığını kontrol edebilir ve bir oyuncunun sahip olduğu öğelerin tam listesini alabilirsiniz.
Envanter API'si yanıtları aşağıdaki kategorilerden öğeleri içerir:
- Giysiler (aksesuarlar, alt giysiler, klasik giysiler, ayakkabılar, üst giysiler)
- Satın alma ve ödüller (rozetler, geçişler, satın alınmış yerler, özel sunucular)
- Avatar öğeleri (avatar animasyonları, klasik başlar, emojiler, yüzler, saçlar, başlar)
Envanter API'si'ni kullanmadan önce, uygulamanız için bir API anahtarı oluşturmalısınız veya OAuth 2 yapılandırmalısınız. Bu sayfadaki örnekler API anahtarlarını kullanmaktadır.
Öğelerin sahipliğini kontrol etme
Bir kullanıcının belirli bir öğeye (örneğin, sınırlı, rozet, geçiş veya özel sunucu) sahip olup olmadığını kontrol etmek istiyorsanız, filter parametresini bir veya daha fazla ID içeren virgülle ayrılmış bir liste kontrol etmek için kullanın. Bu kod örneği üç varlık ID'sini kontrol etmektedir:
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('Yanıt Verisi:', JSON.stringify(jsonData, null, 2));
} else {
console.error('Hata:', response.statusCode, response.statusMessage);
}
});
})
.on('error', (e) => {
console.error(e);
});
Aşağıdaki yanıt, kullanıcının üç öğeden birine sahip olduğunu gösterir:
{
"inventoryItems": [
{
"path": "users/11111111111/inventory-items/VVNFUl9BU1NFVF9JRD0yMDAxMDUxMTkzODg",
"assetDetails": {
"assetId": "1028595",
"inventoryItemAssetType": "CLASSIC_TSHIRT",
"instanceId": "200105119388"
}
}
],
"nextPageToken": ""
}
Öğeleri filtreleme
Bir kullanıcının sahip olduğu yalnızca koleksiyon öğelerini görüntülemek istiyorsanız, yukarıdaki kodu aynı şekilde kullanın, yalnızca farklı bir filter parametresi ile.
const params = '?filter=onlyCollectibles=true;inventoryItemAssetTypes=*';
Filtreleri noktalı virgülle ayrılmış bir liste kullanarak karıştırabilir ve eşleştirebilirsiniz. İş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ı herhangi bir özel izin gerektirmez, ancak birkaç filtre Envanter okuma izinleri gerektirir. Daha fazla bilgi için Filtreleme konusuna bakın.
Sonuçları sayfalandırma
Bir yanıt nextPageToken değeri içeriyorsa, sonraki istekteki pageToken parametresinde bu değeri kullanın. Daha fazla bilgi için Sayfalandırma konusuna bakın.
Sonuç sayısı maxPageSize ile tam bölünebiliyorsa (örneğin, 50 sonucunuz var ve maxPageSize 25 ise), yanıtınızın nextPageToken değeri içermesi, ancak o token'ı kullanan bir isteğin hiçbir sonuç döndürmemesi durumu ile karşılaşabilirsiniz:
GET /cloud/v2/users/{userId}/inventory-items?maxPageSize=25&pageToken=cccDDD
{
"inventoryItems": [],
"nextPageToken": ""
}
Uygulamanızda sayfalandırma uygularken, yalnızca dolu bir nextPageToken kontrol etmek değil, aynı zamanda dolu bir inventoryItems dizisini kontrol etmek en iyi uygulamadır.