Google My Business API token过期后如何重置?
解决Google My Business API access_token 60分钟过期问题
Google OAuth2 颁发的access_token默认有效期固定为3600秒(60分钟),属于平台预设规则,无需额外搜索特殊重置方案,直接使用官方标准的refresh_token长效刷新机制即可解决cronjob定时调用的token过期问题,具体操作步骤如下:
前置准备
- 首次申请OAuth2授权时,必须在授权请求中添加
offline权限scope,同时将请求参数access_type设置为offline,只有满足这两个条件,第一次授权返回结果中才会附带长效refresh_token refresh_token默认仅在用户首次授权时返回1次,后续重新授权如果未添加prompt=consent参数不会重复返回。如果你之前未存储过refresh_token,需要重新走一次授权流程,请求中添加prompt=consent参数强制触发授权弹窗,获取新的refresh_token后持久化加密存储,该token只要用户未主动撤销授权、账号无异常就长期有效
cronjob调用流程改造
每次定时任务启动后,先执行token校验逻辑,再调用GMB接口:
- 读取本地持久化存储的
access_token、access_token过期时间戳、refresh_token - 若当前时间距离
access_token过期时间还有5分钟及以上,直接使用现有access_token调用API - 若
access_token已过期或剩余有效期不足5分钟,调用Google OAuth2 token刷新接口换取新的access_token,请求参数示例:
请求地址:https://oauth2.googleapis.com/token 请求方法:POST 请求参数: client_id=你的Google Cloud应用客户端ID client_secret=你的Google Cloud应用客户端密钥 refresh_token=你存储的长效refresh_token grant_type=refresh_token
- 接口会返回新的
access_token和新的过期时长(默认3600秒),将新的access_token和对应的过期时间戳更新到本地存储后,再使用新的access_token调用GMB接口即可
注意事项
refresh_token对应账号的GMB管理权限,存储时必须做加密处理,避免泄露引发安全风险- 单个Google Cloud应用对同一个用户最多可生成50个有效
refresh_token,超出上限后最早生成的refresh_token会自动失效,不要频繁触发授权流程生成新的refresh_token - 若调用刷新接口返回
invalid_grant错误,说明当前refresh_token已失效,需要重新走授权流程获取新的refresh_token
内容的提问来源于stack exchange,提问作者Linh Nguyen
相关产品推荐
相关产品推荐

