Google Refresh Token是否会过期?如何使其永不过期及报错排查
Google Refresh Token 相关问题与错误排查
1. Google Refresh Token 是否会过期?
默认情况下,Google Refresh Token 不会过期,但存在多种场景会导致其失效:
- 用户主动撤销了对应用的授权
- 用户修改了Google账户密码
- 应用的OAuth客户端配置发生变更(如重定向URI修改)
- 账户触发Google安全机制(如异常登录活动)
- Google Workspace账户的管理员设置了令牌过期策略
2. 如何让Google Refresh Token 永不过期?
- 确保应用完成OAuth验证(未验证的测试应用,其Refresh Token仅7天有效期)
- 避免触发上述令牌失效的操作(如用户不撤销授权、不修改密码)
- 对于Google Workspace账户,联系管理员配置允许永久有效的Refresh Token
- 定期使用Refresh Token获取Access Token(长期闲置的令牌可能被标记无效)
遇到的错误:invalid_grant(invalid_rapt)
运行Python代码通过Refresh Token获取Access Token时,初期正常,一段时间后抛出以下错误:
{
'error': 'invalid_grant',
'error_description': 'reauth related error (invalid_rapt)',
'error_subtype': 'invalid_rapt'
}
该错误表示需要用户重新授权,常见原因:
- Refresh Token因安全原因被Google失效
- 应用处于未验证测试状态,令牌已过期
- 用户账户权限变更,需重新确认授权
相关代码
import requests from datetime import datetime refresh_token = "1//0gGNYTet38TyKCgYIARAAGBASNwF-L9Ir8JMGjR82iiCdPY0bTfdu2gutU50qPGFcASU4EmDWSouvnhvbuGtrEAiijoElpRoUKqg" client_id = ( "760863696391-ub3lqtqj4ou3qf4l35vjd3sa5bft14u1.apps.googleusercontent.com" ) client_secret = "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" token_endpoint = "https://oauth2.googleapis.com/token" payload = { "refresh_token": refresh_token, "client_id": client_id, "client_secret": client_secret, "grant_type": "refresh_token", } # 获取新的访问令牌 response = requests.post(token_endpoint, data=payload) token_data = response.json() print(response.json()) access_token = token_data.get("access_token") print(access_token) refresh_token = token_data.get("refresh_token") expires_in = token_data.get("expires_in") print(access_token, "|", refresh_token, "||", expires_in)
内容的提问来源于stack exchange,提问作者Deependra Gupta
相关产品推荐
相关产品推荐

