请求Revolut API可复用访问令牌时遇client_id缺失错误求助
Troubleshooting "invalid_client: client_id is missing" in Revolut B2B API Token Request
我之前对接Revolut B2B API时也踩过这个一模一样的坑,结合你已经完成的步骤,给你几个针对性的排查方向:
1. 确认请求参数的传递格式
Revolut的这个令牌接口**只接受表单格式(application/x-www-form-urlencoded)**的参数,很多人会误选JSON格式提交,哪怕你填了client_id,后端也根本识别不到。
- 在Insomnia里操作:切换到请求的「Body」标签,选择「Form URL Encoded」类型,然后逐一填入以下必填参数:
grant_type: 固定填authorization_code(对应你用的授权码流程)client_id: 粘贴你上传公钥后获取到的官方client IDcode: 你之前拿到的授权码client_assertion_type: 固定值urn:ietf:params:oauth:client-assertion-type:jwt-bearerclient_assertion: 用私钥签署生成的完整JWT字符串
2. 校验JWT的核心字段是否正确
就算你成功生成了JWT,如果里面的关键字段不符合要求,也会触发这个错误。你可以用本地的jwt命令行工具(或者离线解码工具)解析你的JWT,确认:
sub字段的值和你使用的client_id完全一致(这个字段是JWT里代表客户端身份的核心,必须匹配)aud字段严格等于https://b2b.revolut.com/api/1.0/auth/token(这是接口要求的受众,不能填错)- 签名算法是
RS256(Revolut只支持这个非对称加密算法)
3. 检查client_id的准确性
有时候看起来改了client_id,但可能是复制时带了空格、或者漏了前缀(比如Revolut的B2B client_id一般以b2b_开头)。建议直接从Revolut商家后台的公钥管理页面复制client_id,粘贴到Insomnia后双击选中,检查有没有隐藏的空白字符。
4. 确认公钥是否已生效
虽然你已经完成了公钥上传,但Revolut后台偶尔会有几分钟的同步延迟。如果是刚上传完就测试,建议等待5-10分钟再重试,或者去后台确认公钥的状态是「Active」(活跃)状态。
按照这几个步骤排查下来,应该能解决这个问题。
内容的提问来源于stack exchange,提问作者Radu
相关产品推荐
相关产品推荐

