如何不使用「Google账号登录」获取自有Google API访问令牌查询YouTube直播状态
自有YouTube账号开播状态查询方案
结论
你的需求完全可以实现,不需要让站点访客走Google账号登录流程,不用硬编码临时访问令牌,通过服务端存储长期刷新令牌的方案就能稳定调用指定接口。
具体实现逻辑
- 首先要明确:常规OAuth2访问令牌有效期仅有1小时左右,直接硬编码填入接口请求很快会失效,因此不能直接用临时访问令牌硬编码调用,但可以通过长期有效的刷新令牌动态生成临时令牌解决该问题。
- 第一步:在Google Cloud控制台创建项目,启用YouTube Data API v3,创建类型为「桌面应用」的OAuth客户端,获取对应的客户端ID、客户端密钥,妥善保存不要泄露。
- 第二步:使用你自己的YouTube账号手动走一次授权流程,获取授权码后兑换得到访问令牌+刷新令牌,只要你不主动撤销该OAuth授权,刷新令牌即为长期有效,将刷新令牌、客户端ID、客户端密钥统一保存在你的服务端,绝对不允许暴露到前端页面。
- 第三步:所有YouTube API的调用逻辑全部放在服务端执行,禁止前端直接请求Google接口:
- 服务端可设置定时任务(比如每1分钟查询一次),或者在用户请求触发时,先用存储的刷新令牌、客户端ID、客户端密钥请求Google OAuth接口兑换临时访问令牌
- 用生成的临时访问令牌调用指定接口
GET https://www.googleapis.com/youtube/v3/liveBroadcasts,配置参数part=snippet,status、broadcastStatus=active、mine=true - 接口返回结果中如果存在条目即代表你正在直播,否则为未开播,服务端把开播状态返回给前端展示即可
注意事项
- 所有涉及密钥、令牌的操作必须在服务端完成,避免泄露后被恶意调用耗尽API配额甚至引发账号风险
- 建议增加服务端缓存,不需要每次用户访问都调用Google接口,既降低接口延迟也能节省API配额
- YouTube Data API的免费配额完全可以满足这种低频查询需求,不需要额外付费
内容的提问来源于stack exchange,提问作者ENBYSS
相关产品推荐
相关产品推荐

