如何避免手动获取OAuth 2.0授权码,自动运行YouTube Analytics API脚本?
解决YouTube Analytics API自动运行的OAuth授权问题
要实现脚本每日自动运行、无需手动授权,**服务账号(Service Account)**是适配无人值守场景的最优方案,可替代普通OAuth授权流程,具体步骤如下:
配置服务账号
- 登录Google Cloud控制台,进入对应项目,前往「IAM与管理」→「服务账号」,创建新服务账号
- 为该服务账号生成JSON格式密钥文件,下载后妥善保存(切勿泄露)
- 在YouTube Studio中,将服务账号的邮箱地址添加为频道管理员(必须是管理员权限,否则无法读取Analytics数据)
修改代码适配服务账号
替换原有的get_service()实现,使用服务账号凭据初始化客户端,示例代码如下:from google.oauth2 import service_account from googleapiclient.discovery import build # 定义API权限范围 SCOPES = ['https://www.googleapis.com/auth/yt-analytics.readonly'] # 替换为你的密钥文件实际路径 SERVICE_ACCOUNT_FILE = 'path/to/your/service-account-key.json' def get_service(): credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_FILE, scopes=SCOPES) return build('youtubeAnalytics', 'v2', credentials=credentials) # 原查询逻辑保留,注意替换channel==MINE为具体频道ID youtubeAnalytics = get_service() result = execute_api_request( youtubeAnalytics.reports().query, ids='channel==UCxxxxxxxxx', # 替换为你的频道ID startDate=format_week, endDate=format_today, metrics='estimatedMinutesWatched,views,likes,subscribersGained', dimensions='video', sort='-views', maxResults=20 )关键注意事项
- 服务账号无法使用
channel==MINE,必须手动指定频道ID,可在YouTube Studio→设置→频道→高级设置中获取 - 必须确保服务账号邮箱已被添加为频道管理员,否则会返回权限不足错误
- 密钥文件属于敏感信息,不要提交到代码仓库或公开场景
- 服务账号无法使用
内容的提问来源于stack exchange,提问作者apeera
相关产品推荐
相关产品推荐

