如何解决切换Vonage新应用/账号时Nexmo SDK报system:error:invalid-token错误
排查解决方案
该错误为Vonage服务器验证请求携带的JWT令牌失败导致,可按以下步骤逐一排查:
- 验证私有密钥与应用的配对关系
更换新应用后必须使用新应用创建时生成的唯一私有密钥文件,不可复用旧应用的私钥。同时确认:- 私钥文件内容完整,没有额外的空格、换行、字符篡改
- 配置中填写的私钥路径为绝对路径,服务端运行进程对该文件有可读权限
- 私钥与当前使用的
applicationId属于同一个Vonage应用,不可跨应用混用
- 检查应用权限配置
登录Vonage控制台进入对应应用的设置页,确认已启用Users API、RTC相关的权限开关,未开通对应权限的应用生成的JWT会被判定为无效。 - 排查beta版本SDK的已知问题
你使用的@vonage/server-sdk@2.10.7-beta-2属于测试版本,存在JWT自动生成异常的已知bug。可通过手动生成JWT验证:
首先生成测试JWT,payload需包含以下字段:
签名算法选择RS256,填入你的新应用私钥生成令牌后,用curl调用接口验证:{ "application_id": "你的新应用ID", "iat": 当前10位时间戳, "exp": 当前10位时间戳 + 3600, "sub": "test" }
若手动调用成功,说明是SDK版本问题,建议升级到最新稳定版curl -X POST https://api.nexmo.com/v1/users \ -H "Authorization: Bearer 生成的测试JWT" \ -H "Content-Type: application/json" \ -d '{"name":"test_user","display_name":"测试用户"}'@vonage/server-sdk@3.x即可解决。 - 确认账号凭证归属一致
涉及多账号的场景下,需确保apiKey、apiSecret、applicationId、privateKey四个参数全部属于同一个Vonage账号,不可跨账号混用凭证。 - 校验服务端系统时间
若服务端系统时间与标准时间偏差超过5分钟,生成的JWT时间戳会被Vonage服务器判定为无效,同步服务器系统时间即可解决。
内容的提问来源于stack exchange,提问作者Gan
相关产品推荐
相关产品推荐

