如何通过TwitchLib获取指定游戏的Drops(Entitlements)数据?
解决TwitchLib获取指定游戏Drops活动列表的问题
你搞混了API端点的用途:GetDropsEntitlementsAsync是用来获取当前授权用户已经领取的掉落权益(比如已拿到的皮肤、道具),不是用来查询游戏本身的掉落活动列表(比如哪些任务可触发掉落)。
要获取指定游戏的Drops活动数据,你应该用TwitchLib的Helix.Drops.GetDropsCampaignsAsync方法,这个端点专门拉取游戏的公开掉落活动信息,和你在Twitch官网Drops页面看到的内容对应。
修正后的代码示例
// 第一步:获取目标游戏的ID var gamesResponse = await TwitchApi.Api.Helix.Games.GetGamesAsync(gameNames: new List<string> { "Halo Infinite" }); var targetGameId = gamesResponse.Games.FirstOrDefault()?.Id; if (string.IsNullOrEmpty(targetGameId)) { // 处理游戏未找到的情况 return; } // 第二步:调用正确的端点获取游戏的掉落活动列表 var dropsCampaignsResponse = await TwitchApi.Api.Helix.Drops.GetDropsCampaignsAsync(gameId: targetGameId); // 遍历输出活动信息 foreach(var campaign in dropsCampaignsResponse.Campaigns) { Console.WriteLine($"掉落活动名称:{campaign.Name}"); Console.WriteLine($"活动状态:{campaign.Status}"); Console.WriteLine($"开始时间:{campaign.StartDate}"); Console.WriteLine($"结束时间:{campaign.EndDate}"); }
权限与注意事项
- 这个端点不需要特殊的游戏权限,只要你的Twitch API客户端凭证(Client ID + Client Secret)有效即可,因为掉落活动是公开数据。
- 如果你之前用的是用户授权的token(带用户范围的),也能正常调用这个端点,无需额外申请权限。
- 之前的错误提示虽提到ClientID或token问题,但本质是你用错了端点——
GetDropsEntitlementsAsync需要用户授权的token(访问用户个人权益),但即便传了userId,它也不是你要的游戏掉落活动数据。
内容的提问来源于stack exchange,提问作者Bad Dub
相关产品推荐
相关产品推荐

