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

如何在GitHub公开仓库安全存储Google OAuth密钥并保证可用性?

解决方案:安全共享Google OAuth开源项目

核心原则

绝对不要将你的client_secret.json提交到公开仓库,必须让每个使用者使用自己的Google OAuth凭据——这既是安全要求,也是Google OAuth的设计逻辑(用户需授权自己的应用访问自己的数据)。

具体实现步骤

  1. 提供示例配置文件
    在仓库中添加一个client_secret.example.json,将敏感字段替换为占位符,保留固定的字段结构:

    {
    "installed": {
        "client_id": "YOUR_CLIENT_ID_HERE",
        "project_id": "YOUR_PROJECT_ID_HERE",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_secret": "YOUR_CLIENT_SECRET_HERE",
        "redirect_uris": ["http://localhost"]
      }
    }
    
  2. 忽略真实密钥文件
    在.gitignore中添加你的实际密钥文件名,确保Git不会追踪它:

    # Google OAuth credentials
    client_secret.json
    # 可选:忽略生成的token文件,避免泄露用户授权信息
    token.json
    
  3. 在README中明确使用指引
    详细写清楚使用者需要完成的步骤:

    • 登录Google Cloud Console,创建新项目
    • 搜索并启用YouTube Data API v3
    • 进入「API和服务」→「凭据」,创建「OAuth客户端ID」,应用类型选择「桌面应用」
    • 下载生成的JSON凭据文件,重命名为client_secret.json,放到项目指定目录
    • 运行应用,按照授权流程登录自己的Google账号,授权应用访问YouTube数据
  4. 代码中读取本地凭据
    确保代码逻辑是读取本地的client_secret.json,不要硬编码任何敏感信息。比如Python示例:

    import os
    import json
    from google_auth_oauthlib.flow import InstalledAppFlow
    
    def load_credentials():
        creds_path = 'client_secret.json'
        if not os.path.exists(creds_path):
            raise FileNotFoundError("请先按照README指引创建并放置client_secret.json文件")
        
        with open(creds_path, 'r') as f:
            return json.load(f)
    
    # 初始化OAuth流程
    flow = InstalledAppFlow.from_client_config(
        load_credentials(),
        scopes=['https://www.googleapis.com/auth/youtube.readonly'] # 根据需求调整权限范围
    )
    

成功案例参考

几乎所有使用Google OAuth的开源项目都采用这种模式,比如:

  • Google官方的YouTube Data API示例仓库(通过示例配置+用户自行创建凭据的方式运行)
  • 各类开源YouTube备份/管理工具(如youtube-dl衍生项目中涉及OAuth的分支)

这种方式既保证了仓库的可复用性,又彻底避免了你的敏感密钥泄露,同时符合Google的OAuth使用规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 00:06:24