You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为个人使用持久化YouTube Data API V3认证(基于google-api-python-client)

解决YouTube Data API v3上传视频的认证持久化问题

首先明确:上传视频属于需要用户授权的写操作,API Key仅支持无用户身份的读操作,所以必须用OAuth2认证。要避免每次手动登录,核心是把认证后的凭证持久化保存到本地,下次直接加载即可。

修改后的代码实现

from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
from google.auth.transport.requests import Request
import os

# 定义凭证保存路径和权限范围
TOKEN_FILE = 'token.json'
SCOPES = ['https://www.googleapis.com/auth/youtube.upload']

def get_youtube_service():
    credentials = None
    # 优先加载本地已保存的凭证
    if os.path.exists(TOKEN_FILE):
        credentials = Credentials.from_authorized_user_file(TOKEN_FILE, SCOPES)
    
    # 处理凭证无效/过期的情况
    if not credentials or not credentials.valid:
        if credentials and credentials.expired and credentials.refresh_token:
            # 自动刷新过期凭证
            credentials.refresh(Request())
        else:
            # 无有效凭证时,走浏览器授权流程
            flow = InstalledAppFlow.from_client_secrets_file(
                'client_secrets.json',
                SCOPES
            )
            credentials = flow.run_local_server(port=8080)
        
        # 将新凭证保存到本地文件
        with open(TOKEN_FILE, 'w') as token:
            token.write(credentials.to_json())
    
    # 构建并返回YouTube服务对象
    return build("youtube", "v3", credentials=credentials)

# 获取服务对象,后续用于上传视频
youtube = get_youtube_service()
# 这里写你的视频上传代码...

关键说明

  1. 首次运行:还是需要手动登录授权一次,完成后凭证会自动保存到token.json
  2. 后续运行:脚本会直接读取token.json里的凭证,无需再登录;如果凭证过期,会自动用刷新令牌更新
  3. 注意事项:
    • client_secrets.json必须是Google Cloud Console中创建的桌面应用类型OAuth2客户端ID,不要用Web应用类型
    • 不要泄露token.json和client_secrets.json,它们包含你的账户授权信息
    • 如果需要修改权限范围或凭证失效,直接删除token.json,重新运行脚本授权即可

内容的提问来源于stack exchange,提问作者samidarko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:03:23