Python从GitHub加载服务账号JSON连接Google Sheet方法
解答
思路可行,但你写的示例代码有几处错误,修正后即可正常拉取GitHub上的凭证完成认证:
- 缺少
json模块导入,直接调用json.loads()会触发名称错误 gspread.service_account()参数使用错误:filename参数仅接受本地凭证文件的路径字符串,你已经将拉取到的内容解析为字典,需要改用info参数传入凭证信息- 建议增加HTTP请求状态校验,避免网络波动、仓库路径变更等导致请求失败时,后续逻辑抛出难以定位的异常
修正后代码
import json import requests import gspread from gspread_formatting import * json_url = 'https://raw.githubusercontent.com/username/main/myjson.json' resp = requests.get(json_url) # 请求失败时直接抛出对应HTTP错误 resp.raise_for_status() # 解析返回内容为凭证字典 credential = json.loads(resp.text) # 传入凭证字典完成认证 gc = gspread.service_account(info=credential)
注意事项
强烈不建议将服务账号私钥上传到公开GitHub仓库:私钥一旦公开,任何人都可以用它访问该服务账号被授权的所有Google资源(包括所有关联的Google Sheet)。如果你的仓库是公开状态,建议立刻前往Google Cloud控制台轮换该服务账号的私钥,避免资产损失。如果需要给客户统一提供凭证,优先选择私有仓库分发、单独传输凭证文件、或带鉴权的接口下发等更安全的方式,避免私钥完全公开泄露。
内容的提问来源于stack exchange,提问作者kulekhani
相关产品推荐
相关产品推荐

