ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

PyDrive2服务账号认证教程:服务器上免登录自动化操作Google Drive

2026/8/17 16:12:59 拓冰建站 浏览量
PyDrive2服务账号认证教程:服务器上免登录自动化操作Google Drive PyDrive2服务账号认证教程服务器上免登录自动化操作Google Drive【免费下载链接】PyDrive2Google Drive API Python wrapper library. Maintained fork of PyDrive.项目地址: https://gitcode.com/gh_mirrors/py/PyDrive2在服务器上自动化操作 Google Drive最大的痛点就是 OAuth2.0 需要人工登录授权。本教程将教你使用PyDrive2的服务账号认证Service Account方式彻底告别浏览器授权流程实现服务器免登录自动化操作 Google Drive。PyDrive2 是 PyDrive 的维护分支封装了 Google Drive API三行代码即可完成服务账号认证。为什么服务器自动化首选服务账号认证如果你用传统的 OAuth 客户端 ID首次必须人工打开浏览器授权这在无图形界面的服务器上非常麻烦而且 token 过期后还要重新授权。服务账号认证则完全不同 完全免交互无需浏览器、无需人工授权 Token 自动刷新适合长期运行的定时任务 权限可精确控制安全性更高☁️ 天然适配 Cron 任务、CI/CD、Docker 等无头环境第一步在 Google Cloud 控制台创建服务账号在使用 PyDrive2 服务账号认证之前需要准备一个 JSON 格式的服务账号密钥文件步骤如下打开 Google Cloud Console创建或选择一个项目进入「API 与服务」→「凭据」→「创建凭据」→「服务账号」给服务账号命名后点击「创建并继续」在服务账号列表中找到它点击「管理密钥」→「添加密钥」→「创建新密钥」密钥类型选择JSON下载保存为service-secrets.json⚠️ 关键一步服务账号默认无法访问你的 Drive 文件必须把目标文件夹或文件分享给服务账号的邮箱格式类似xxxxxx.iam.gserviceaccount.com否则会报权限错误。第二步配置 settings.yaml 服务账号参数PyDrive2 通过settings.yaml统一管理认证配置。服务账号认证的核心是设置client_config_backend: service并在service_config中指定密钥文件路径client_config_backend: service service_config: client_json_file_path: service-secrets.json save_credentials: False oauth_scope: - https://www.googleapis.com/auth/drive配置说明配置项作用client_config_backend: service声明使用服务账号认证client_json_file_path服务账号 JSON 密钥文件路径client_json_dict直接把 JSON 内容作为字典传入client_json直接把 JSON 内容作为字符串传入client_user_email需要模拟的普通用户邮箱委派模式oauth_scope授权范围默认即可如果不想把密钥落盘也可以改用client_json_dict或client_json适合把密钥写进环境变量的场景。第三步三行代码完成服务账号认证PyDrive2 将整个服务账号认证流程封装为ServiceAuth()方法核心逻辑在 pydrive2/auth.py 中。认证完成后即可创建GoogleDrive对象操作文件from pydrive2.auth import GoogleAuth from pydrive2.drive import GoogleDrive settings { client_config_backend: service, service_config: { client_json_file_path: service-secrets.json, } } gauth GoogleAuth(settingssettings) gauth.ServiceAuth() drive GoogleDrive(gauth) # 现在可以自由操作 Google Drive 了 file_list drive.ListFile({q: root in parents}).GetList() for f in file_list: print(f[title], f[id])运行这段代码不再弹出任何浏览器授权页面直接就能列出 Drive 根目录文件。官方文档中也有同样的示例可参考 docs/oauth.rst 中的 Authentication with a service account 章节。如何开启委派模式访问普通用户文件默认情况下服务账号拥有独立的 Drive 空间。如果业务上需要服务账号代替某个普通用户操作其 Drive 文件可以配置 G Suite 的「全域委派」client_config_backend: service service_config: client_json_file_path: service-secrets.json client_user_email: target-useryour-company.comPyDrive2 内部会调用create_delegated(subuser_email)实现委派。注意全域委派需要在 Google Workspace 管理后台开启普通 Gmail 账号不支持此功能。服务账号认证常见踩坑指南权限拒绝错误99% 的情况是没有把文件/文件夹分享给服务账号邮箱去 Drive 里右键分享即可只能访问被分享的资源服务账号无法看到整个 Drive只能访问显式分享给它的内容⏰Token 过期ServiceAuth()会自动刷新 token无需手动干预测试参考项目在 pydrive2/test/settings/ 目录提供了多份服务账号测试配置如test_oauth_test_07.yaml、test_oauth_test_08.yaml可以对照参考安装pip install PyDrive2即可无需额外依赖总结PyDrive2 的服务账号认证把 Google Drive 自动化从「需要人工授权的 OAuth2.0」变成了「纯代码免登录」特别适合服务器定时备份、数据同步、CI/CD 流水线等场景。核心配置只需一个settings.yaml加三行 Python 代码配置client_config_backend: service、调用gauth.ServiceAuth()、创建GoogleDrive(gauth)即可在服务器上持续稳定地自动化操作 Google Drive。【免费下载链接】PyDrive2Google Drive API Python wrapper library. Maintained fork of PyDrive.项目地址: https://gitcode.com/gh_mirrors/py/PyDrive2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考