如何解决Python脚本持续引用已删除OAuth 2.0 Client ID的问题
deleted_client 报错排查与解决 运行OAuth 2.0 授权相关脚本时返回如下报错:
RefreshError: ('deleted_client: The OAuth client was deleted.', {'error': 'deleted_client', 'error_description': 'The OAuth client was deleted.'})
即使已经重新生成新的Client ID和client_secret文件仍触发该报错,核心原因是脚本并未实际加载新的客户端配置,而是复用了本地/运行环境中绑定已删除旧客户端的缓存凭据,按以下步骤逐一排查即可修复:
- 清理旧的授权缓存文件
绝大多数OAuth客户端脚本会在首次完成用户授权后,在运行目录生成持久化的凭据缓存文件,常见命名包括token.json、token.pickle、cached_credentials.json,这类文件存储的刷新令牌和旧Client ID绑定,只要它存在,脚本就会优先读取这个缓存,不会调用你新生成的client_secret。直接删除所有这类缓存文件即可。 - 校验client_secret文件的读取路径
检查脚本中加载客户端配置的代码逻辑,确认代码中传入的文件路径,和你新下载的client_secret文件存放路径完全一致。很多时候新的secret文件被下载到了其他目录,但脚本里写死的路径还是旧文件的存放位置,自然读不到新配置。
可以在加载配置的代码前加一行打印当前读取文件的绝对路径做校验,以Python为例:import os # 把括号里的文件名替换成你代码中引用的client_secret文件名 print("当前加载的客户端配置路径:", os.path.abspath("client_secret.json")) - 重新完成授权流程
删除旧缓存、确认路径正确后重新运行脚本,会自动拉起OAuth授权页面,完成账号授权后会生成绑定新Client ID的缓存凭据,后续运行就不会再触发客户端已删除的报错。 - 多环境部署额外检查
如果脚本是部署在服务器、容器、云函数等线上环境,需要确认你已经把新的client_secret文件同步到了线上运行目录,不要只在本地替换了文件,线上环境仍在使用旧版本配置。
内容的提问来源于stack exchange,提问作者din2345
相关产品推荐
相关产品推荐

