Ubuntu运行Google Sheets更新脚本报403权限不足,树莓派可正常执行
嘿,我太懂你这种困惑了——明明在树莓派上跑的好好的Python脚本,复制到Ubuntu桌面就报403权限不足,而且配置文件啥的都一模一样!虽然你已经解决了问题,但大概率是踩了下面这些常见的坑,我给你拆解下:
OAuth2令牌的设备绑定限制:oauth2client生成的本地令牌文件(比如
token.json)有时候会和设备的硬件指纹、系统环境绑定。树莓派上生成的令牌被Google服务器标记为仅在该设备有效,复制到Ubuntu后,服务器识别到不同的运行环境,直接拒绝了请求,就抛出了403。如果你的解决方法是在Ubuntu上重新走了一遍OAuth授权流程生成新令牌,那就是这个原因没错了。系统时间不同步:Google的OAuth2验证对时间精度要求特别高,要是Ubuntu系统的本地时间和UTC标准时间偏差超过几分钟,就会触发权限验证失败。树莓派可能默认开启了自动时间同步,时间一直准确;而Ubuntu桌面可能没开启同步,或者时间手动设错了,这就导致凭证验证不通过,出现403错误。
本地文件权限问题:虽然你复制了整个文件夹,但树莓派和Ubuntu的用户权限、umask设置可能不一样。比如凭证文件(
credentials.json或token.json)在Ubuntu下没有可读权限,或者脚本没有权限生成临时令牌文件,表面上是Google那边的权限不足,实际是本地文件权限的锅。要是你解决时调整了文件的读写权限,那就是这个原因。依赖库版本差异:你说安装了相关组件,但树莓派和Ubuntu上的gspread、oauth2client版本可能不一致。比如树莓派上的旧版本库兼容旧的验证逻辑,而Ubuntu上装的新版本对凭证验证有了更严格的要求,导致旧的凭证失效。这种情况下,要么降级库版本,要么按照新版本的要求重新配置授权,就能解决问题。
这些都是跨设备运行Google Sheets自动化脚本时最容易碰到的权限问题诱因,你可以对照下自己的解决操作,应该能对应上其中某一点~
内容的提问来源于stack exchange,提问作者HRW

