pydrive加载Google Cloud的client_secret.json报错如何解决
问题排查解决步骤
- 验证
client_secret.json结构合法性
打开JSON文件确认最外层有且只有web或installed其中一个顶级键,无多余外层嵌套、无缺失。本地运行脚本场景下,正确的凭证结构示例如下:
如果你之前调用Google Sheet API用的是服务账号凭证,{ "installed": { "client_id": "xxx.apps.googleusercontent.com", "client_secret": "xxx", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "redirect_uris": ["http://localhost"] } }LoadClientConfigFile方法不支持该类凭证的结构,直接更换适配服务账号的验证逻辑即可:from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive from oauth2client.service_account import ServiceAccountCredentials gauth = GoogleAuth() # 按需调整权限范围 scope = ['https://www.googleapis.com/auth/drive'] gauth.credentials = ServiceAccountCredentials.from_json_keyfile_name('client_secret.json', scope) drive = GoogleDrive(gauth) - 验证文件路径与权限
确认代码运行的工作目录下存在对应文件,可新增代码打印绝对路径校验:
同时确认当前运行进程对该文件有可读权限。import os print(os.path.abspath('client_secret.json')) - 验证JSON文件无语法错误
确认文件没有被截断、引号不匹配、多余逗号等JSON语法问题,可通过JSON格式校验工具验证合法性。 - 确认凭证类型匹配
如果是本地运行脚本,需要在Google Cloud控制台的凭据页面创建桌面应用类型的OAuth 2.0客户端ID,下载的凭证才会默认带installed顶级键,符合pydrive的格式要求。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

