Google API出现RefreshError(invalid_grant):令牌过期或吊销问题求助
关于Google OAuth RefreshError (invalid_grant)的原因分析
代码片段:
SCOPES = ['https://www.googleapis.com/auth/gmail.readonly'] creds = None if os.path.exists('token.pickle'): with open(self.CREDENTIALS_PATH+self.conjoiner+'token.pickle', 'rb') as token: creds = pickle.load(token) if not creds or not creds.valid: if creds and creds.expired and creds.refresh_token: creds.refresh(Request()) ##error here
报错信息:
Exception has occurred: RefreshError ('invalid_grant: Token has been expired or revoked.', {'error': 'invalid_grant', 'error_description': 'Token has been expired or revoked.'})
导致该错误的常见原因包括:
- 刷新令牌过期:Google测试状态下的应用(未发布到生产),刷新令牌有效期通常只有7天,你刚好是一周前创建的应用,这是最可能的原因。另外,账号开启两步验证后长期未使用应用,也会导致刷新令牌过期。
- 授权被主动撤销:用户可能在Google账号的安全设置里,手动移除了这个应用的访问权限,刷新令牌直接失效。
- token文件异常:
token.pickle文件损坏、被篡改,或者存储路径错误,导致加载的令牌数据不完整或无效。 - 客户端凭据不匹配:如果后续修改了Google Cloud控制台中应用的客户端ID/密钥,而代码里用的还是旧凭据,就会验证失败。
- 账号或权限限制:用户的Google账号被封禁、暂停,或者所在组织的管理员限制了该应用的访问权限,也会触发这个错误。
内容的提问来源于stack exchange,提问作者prodohsamuel
相关产品推荐
相关产品推荐

