Flutter Google Photo API随机调用失败:登录正常但报invalid_token错误
解决Flutter调用Google Photo API随机返回invalid_token的问题
可能的原因及修复方案
1. 完善Token自动刷新机制
Google OAuth2的Access Token有效期仅1小时,若代码未正确实现自动刷新,就会出现随机失效(比如登录后1小时内正常,之后报错)。
- 确认使用的Google Auth库(如
google_sign_in、googleapis)已配置Refresh Token的获取逻辑 - 调用API前先校验Token过期时间,过期或即将过期时先触发刷新
2. 确认权限范围(Scopes)是否正确
- 检查登录时请求的Scopes是否包含Google Photo API所需权限,比如
photoslibrary.readonly、photoslibrary.appendonly等 - 若之前Scopes不全,重新登录时需明确指定完整权限列表,否则仍会因权限不足触发无效Token报错
3. 排查Token存储与读取逻辑
随机失效常和本地存储问题有关:
- 用
SharedPreferences存储Token时,确保序列化/反序列化过程无数据损坏 - 检查是否存在旧Token未被覆盖的情况,导致后续请求误用过期Token
4. 校验API请求的Token携带方式
- 确保每次调用API时,请求头正确携带
Authorization: Bearer {access_token} - 排查是否有请求拦截器错误修改了Authorization字段
调试技巧
- 打印每次请求的Access Token,通过Google Token Info接口(代码内直接调用)校验Token的有效性、过期时间和权限
- 捕获Token刷新过程的异常,确认是否因刷新失败导致使用无效Token
内容的提问来源于stack exchange,提问作者TSR
相关产品推荐
相关产品推荐

