You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google App Engine中GetAccessToken报错:token.expires_in为NoneType

解决Google App Engine Python 2.7中GetAccessToken的NoneType运算错误

嘿,我之前在维护Python 2.7的GAE项目时也碰到过一模一样的问题!这种NoneType和整数运算的错误,本质上是授权返回的token里expires_in字段没正确获取到,导致后续计算过期时间时炸了。给你几个实际可行的排查和解决方向:

  • 先确认授权请求的完整性
    先在调用GetAccessToken之后,手动打印返回的token对象,看看里面的字段是不是齐全的。比如加一行print(token),检查有没有expires_in这个键,或者它的值是不是真的为None。有时候是因为请求的scopes不正确、服务账号密钥配置有误,或者网络问题导致token返回不完整,这时候得先把请求层面的问题搞定。

  • 给expires_in加个默认值兜底
    考虑到Python 2.7的库对空值的容错性不如新版本,你可以在计算过期时间的时候主动处理None的情况。比如把原来的运算代码改成:

    now = int(time.time())
    expires_at = now + (token.expires_in if token.expires_in is not None else 3600)
    

    3600秒是Google默认的token有效期,用这个值兜底至少能让程序先跑起来,后续再排查为什么expires_in会是None。

  • 锁定兼容Python 2.7的SDK版本
    虽然你说SDK已经更新,但要注意:Google很多官方库从2.0版本开始就不再支持Python 2.7了。比如google-auth库,2.0+完全放弃了2.7支持,如果你装了最新版,很可能会出现这种奇怪的兼容性问题。建议降级到明确支持2.7的版本,比如:

    pip install google-auth==1.35.0
    pip install google-api-python-client==1.12.1
    

    这两个版本都是经过验证能在Python 2.7的GAE环境下正常工作的。

  • 检查App Engine环境的依赖配置
    如果是在GAE标准环境,确保app.yaml里的runtime设置为python27,并且requirements.txt里只列出兼容2.7的库版本,避免不同版本的依赖冲突。比如不要同时装google-auth的1.x和2.x版本,否则会出现奇怪的导入问题。

内容的提问来源于stack exchange,提问作者Josh Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:17:45