You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vonage Server SDK发MMS遇401错误,求JWT认证实现指导

解决@vonage/server-sdk发送MMS时的401 Unauthorized错误

问题原因

@vonage/server-sdk 默认对SMS使用API密钥/密码认证,但Vonage Messages API(包含MMS)要求使用JWT认证——这就是你能正常发送SMS但MMS报401的核心原因。

解决方案:配置SDK使用JWT认证

1. 准备必要信息

你需要提前获取:

  • Vonage应用ID(创建应用时生成)
  • 应用对应的私钥(创建应用时下载的.pem文件)
  • 已关联到该应用的发送号码(FROM_NUMBER)

2. 初始化带JWT认证的Vonage客户端

有两种方式配置JWT认证:

方式一:让SDK自动生成并管理JWT

直接传入应用ID和私钥,SDK会自动处理JWT的生成与刷新逻辑:

const { Vonage, Image } = require('@vonage/server-sdk');
const fs = require('fs');

const vonage = new Vonage({
  applicationId: '你的Vonage应用ID',
  privateKey: fs.readFileSync('./path/to/your/private.key', 'utf8') // 读取本地私钥文件
});
方式二:手动生成JWT后传入

如果需要自定义JWT的有效期等参数,可以用@vonage/jwt工具生成后传入:

const { Vonage, Image } = require('@vonage/server-sdk');
const { generateJwt } = require('@vonage/jwt');
const fs = require('fs');

// 生成JWT,可自定义有效期等参数
const jwt = generateJwt({
  applicationId: '你的Vonage应用ID',
  privateKey: fs.readFileSync('./path/to/your/private.key', 'utf8'),
  expiresIn: '24h' // 可选,设置JWT有效期为24小时
});

const vonage = new Vonage({
  jwt: jwt
});

3. 发送MMS的代码

使用上述初始化好的客户端,原发送代码无需大幅修改:

const IMAGE_URL = '你的图片资源URL';
const TO_NUMBER = '接收方号码(需带国家码)';
const FROM_NUMBER = '已关联应用的发送号码';

vonage.messages.send(
  new Image({ url: IMAGE_URL }, TO_NUMBER, FROM_NUMBER)
)
.then(resp => console.log('MMS发送成功,消息UUID:', resp.message_uuid))
.catch(err => console.error('发送失败:', err));

关键注意事项

  • 确保发送号码(FROM_NUMBER)已正确关联到你的Vonage应用
  • 私钥文件内容要完整,不要遗漏开头的-----BEGIN PRIVATE KEY-----和结尾的-----END PRIVATE KEY-----
  • 若仍报错,检查应用是否已启用Messages API权限

内容的提问来源于stack exchange,提问作者vinoth87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:16:08