调用Tapkey接口返回400 bad request invalid_grant错误如何解决
调用Tapkey token接口返回invalid_grant错误的原因及解决方案
invalid_grant是OAuth 2.0协议定义的标准错误码,针对https://login.tapkey.com/connect/token接口的调用场景,具体产生原因和对应解决方法如下:
常见产生原因
- 授权码已失效:Tapkey发放的
authorization_code有效期极短,且仅支持单次兑换,重复使用、超时使用都会触发该错误 - 流程参数不匹配:兑换token时传入的
client_id、redirect_uri,和前期获取授权码时传入的对应参数不一致,包括大小写、末尾斜杠等细节差异 - 授权类型传值错误:
grant_type参数值不符合当前使用的授权场景要求 - 刷新token无效:使用refresh_token兑换新access token时,传入的refresh_token已过期、被吊销,或对应用户权限已被收回
- 客户端凭证不匹配:
client_id和client_secret对应关系错误,或client_secret传值有误 - 参数编码异常:请求参数中存在特殊字符但未做URL编码,导致服务端解析参数失败
对应解决方法
- 授权码兑换场景下,拿到授权码后1分钟内发起兑换请求,且同一个授权码仅发起一次兑换请求,兑换失败后重新走授权流程获取新的授权码再尝试
- 严格核对授权全流程的
client_id、redirect_uri参数,确保两个阶段的参数完全一致 - 根据使用的授权场景准确填写
grant_type参数:- 授权码模式:
grant_type=authorization_code - 刷新token模式:
grant_type=refresh_token - 客户端凭证模式:
grant_type=client_credentials
- 授权码模式:
- 刷新token兑换失败时,先校验refresh_token有效性,若已过期则重新走完整授权流程获取新的token组合
- 核对
client_secret参数,确保和Tapkey管理后台分配的凭证完全一致,避免出现多余空格、大小写错误 - 所有请求参数做标准URL编码后再发起请求,避免特殊字符解析异常
- 排查阶段可将请求参数复制到API测试工具发起校验,排除代码构造请求的逻辑错误
内容的提问来源于stack exchange,提问作者Waqar Yazdani
相关产品推荐
相关产品推荐

