如何配置Google API/OAuth实现Python脚本无需重复认证运行?
解决PyDrive自动认证Google Drive的方案
Google允许无人工干预的自动认证,你可以通过**服务账号(Service Account)**实现,具体步骤如下:
1. 创建并配置Google服务账号
- 登录Google Cloud控制台,创建新项目或使用现有项目
- 启用Google Drive API
- 创建服务账号:进入「IAM与管理员」→「服务账号」,点击「创建服务账号」,填写信息完成创建
- 生成服务账号密钥:在服务账号详情页的「密钥」标签,点击「添加密钥」→「创建新密钥」,选择JSON格式,下载密钥文件(建议命名为
client_secrets.json)
2. 授权服务账号访问目标Drive文件夹
- 打开你的Google Drive,找到目标上传文件夹
- 点击文件夹「分享」按钮,输入服务账号的邮箱(可在服务账号详情页获取),赋予「编辑」权限后保存
3. 修改PyDrive脚本实现自动认证
替换原有认证逻辑,使用服务账号密钥完成无交互认证:
from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive # 配置服务账号认证 gauth = GoogleAuth() # 传入服务账号密钥文件路径 gauth.ServiceAuth(service_account_file='path/to/client_secrets.json') drive = GoogleDrive(gauth) upload_file_list = ['file1.txt', 'file2.jpg'] # 替换为实际文件路径 for upload_file in upload_file_list: # 替换为目标文件夹的实际ID gfile = drive.CreateFile({'parents': [{'id': 'your-target-folder-id'}]}) gfile.SetContentFile(upload_file) gfile.Upload() print(f"{upload_file} 上传完成")
注意事项
- 确保密钥文件路径正确,脚本运行环境可访问该文件
- 服务账号有独立的Drive存储空间,通过分享授权可访问你个人Drive内的文件夹
- 若上传到服务账号自身的Drive,无需分享文件夹,直接使用服务账号Drive的文件夹ID即可
内容的提问来源于stack exchange,提问作者Patrick McGavick
相关产品推荐
相关产品推荐

