如何通过YouTube LiveChatBans API实现封禁、解封及获取封禁用户列表?
YouTube Live Chat 封禁、解封及封禁列表实现方案
一、封禁用户(insert 方法)
调用liveChatBans.insert接口即可完成封禁,核心参数要求如下:
liveChatId:当前直播聊天室的ID(可通过liveBroadcasts.list接口获取直播详情时拿到)channelId:主播的频道IDbannedUserDetails.channelId:被封禁用户的频道ID(必须从聊天消息的authorChannelId字段获取,无法凭空生成)- 封禁类型:设置
type: "permanent"为永久封禁,或通过banDurationSeconds指定临时封禁时长(比如3600代表1小时)
示例HTTP请求:
POST https://www.googleapis.com/youtube/v3/liveChat/bans?part=snippet Authorization: Bearer [你的ACCESS_TOKEN] Content-Type: application/json { "snippet": { "liveChatId": "LIVE_CHAT_ID_VALUE", "channelId": "YOUR_CHANNEL_ID", "type": "permanent", "bannedUserDetails": { "channelId": "TARGET_USER_CHANNEL_ID" } } }
二、解封用户(delete 方法)
解封的核心是拿到banId——这个ID是封禁时接口返回的唯一标识,官方未提供查询接口,必须提前保存:
- 封禁时留存返回结果:调用
insert成功后,响应体里的id字段就是banId,务必把这个ID和被封用户ID、直播ID等信息存入应用数据库,这是自动化解封的唯一可靠途径。 - 手动获取历史封禁ID:如果是之前通过YouTube Studio封禁的用户,可登录后台进入「评论管理」→「被封禁用户」,导出CSV文件,里面会包含相关ID信息,但无法集成到应用中。
拿到banId后,调用delete接口即可解封:
DELETE https://www.googleapis.com/youtube/v3/liveChat/bans?id=BAN_ID_VALUE&part=snippet Authorization: Bearer [你的ACCESS_TOKEN]
三、获取封禁用户列表(官方API无直接接口,变通方案)
YouTube Live Chat API确实没有提供获取封禁列表的接口,只能通过以下方式实现:
- 自建封禁记录数据库:每次封禁用户时,把
banId、被封用户ID、封禁时间、封禁类型、关联直播ID等信息存入自己的数据库,后续需要列表时直接查询该数据库,这是唯一能集成到应用中的方案。 - YouTube Studio手动导出:适合少量历史封禁记录的场景,但无法自动化。
- 辅助验证用户状态:如果需要判断某用户是否被封,优先查询自己的数据库;若没有记录,也可尝试给该用户发送测试消息(若返回权限错误,可间接判断被封,但这种方式误差大,不推荐)。
额外提示
- 临时封禁到期后,YouTube会自动解除,无需手动调用delete,可在数据库中记录到期时间,定期清理过期记录。
- 确保你的OAuth令牌拥有
youtube.liveChat权限,否则会返回权限不足错误。
内容的提问来源于stack exchange,提问作者Arthur Saverest
相关产品推荐
相关产品推荐

