如何获取已获管理权限的YouTube频道的OAuth凭证?
用户被授予某YouTube频道的管理权限,已创建个人频道并接受邀请,在YouTube UI中可切换至该授权频道并以频道身份回复评论(评论显示频道名称)。用户具备Google API使用经验,曾成功通过OAuth2处理Google My Business评论。
目前用户可通过API回复该频道视频的评论,但评论显示为个人账号名称。用户推测需获取对应频道范围的访问令牌,但授权过程未出现频道选择环节,询问缺失的操作步骤。
用户已完成的操作:
- 创建Google Web客户端ID、设置OAuth同意页面并启用YouTube Data API v3
- 生成OAuth2授权URL,传入以下权限范围:
"https://www.googleapis.com/auth/youtube", "https://www.googleapis.com/auth/youtube.channel-memberships.creator", "https://www.googleapis.com/auth/youtube.readonly", "https://www.googleapis.com/auth/youtubepartner", "https://www.googleapis.com/auth/youtube.upload", "https://www.googleapis.com/auth/youtube.force-ssl", "https://www.googleapis.com/auth/youtubepartner-channel-audit",
- 使用拥有该频道访问权限的Gmail账号登录并接受授权,获取访问令牌并保存刷新令牌,后续可正常换取新的访问令牌(流程与Google My Business操作一致)
调整授权URL参数,触发频道选择环节
在生成OAuth2授权URL时,必须添加access_type=offline和prompt=select_account consent两个参数。access_type=offline确保能持久获取刷新令牌,prompt=select_account consent会强制弹出账号/频道选择界面,让你明确选择要授权的目标管理频道,避免默认绑定个人频道。API请求中明确指定目标频道ID
调用评论回复接口(comments.insert或commentThreads.insert)时,必须在请求体的snippet字段中设置channelId为目标管理频道的ID,而不是使用个人频道ID或留空。示例请求体结构:{ "snippet": { "channelId": "目标频道ID", "videoId": "视频ID", "topLevelComment": { "snippet": { "textOriginal": "评论内容" } } } }验证授权令牌关联的频道
调用channels.listAPI,传入参数part=snippet&id=目标频道ID或part=snippet&mine=true,检查返回结果是否包含目标管理频道。如果仅返回个人频道,说明授权时未正确选择频道,需带上调整后的参数重新发起授权流程。精简权限范围
当前权限范围过于冗余,仅需保留https://www.googleapis.com/auth/youtube和https://www.googleapis.com/auth/youtube.force-ssl即可满足评论回复需求。冗余权限可能干扰授权流程,建议精简后重新授权。
内容的提问来源于stack exchange,提问作者Danno

