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

使用Next.js与Agora.io 4调用start method时API请求体校验失败求助

解决Agora云录制Start接口报错'post method API body check failed!'

Postman能正常请求但代码里报错,核心原因是请求体的参数类型/格式和Agora接口要求不匹配,以下是具体排查和解决步骤:

1. 检查UID的类型

Agora云录制Start接口要求uid为数字类型,但从req.body获取的uid大概率是字符串(前端传参或Next.js自动解析导致),这会触发接口校验失败。

修改代码,将uid转为数字:

// 解构参数后添加转换
const { uid, cname, resourceId, token } = req.body;
const uidNum = parseInt(uid, 10); // 转为数字,确保是有效整数

然后在data对象中使用uidNum代替原来的uid。

2. 校验StorageConfig中的Vendor类型

storageConfig.vendor需要是整数枚举值(比如AWS对应1,阿里云对应2),如果你的环境变量S3_VENDOR是字符串格式(比如"1"),同样会导致校验失败:

const vendorNum = parseInt(vendor, 10); // 转为数字枚举值

然后在storageConfig里替换为vendor: vendorNum。

3. 打印实际请求体对比Postman

在发送请求前打印data,和Postman中能成功的请求体做对比,排查是否有参数缺失、类型错误或多余字段:

console.log("Request Body to Agora:", JSON.stringify(data, null, 2));

重点检查:

  • 所有数字类型字段(uid、channelType、subscribeUidGroup、vendor)是否都是Number而非String
  • 环境变量是否正确加载(比如accessKey、bucket是否为空)
  • streamMode的值是否为Agora允许的枚举("standard"或"mix")

4. 查看Agora返回的详细错误信息

修改catch块,打印Agora返回的具体校验错误,能直接定位问题字段:

catch (error) {
    const errorDetails = error.response?.data || error.message;
    console.error("Agora Start API Error:", errorDetails);
    res.status(error.response?.status || 500).send(errorDetails);
}

Agora的错误响应通常会明确指出哪个参数不符合要求,比如"error": "invalid uid type"。

5. 确认Authorization头的正确性

虽然Postman能用,但可以再验证Base64编码是否正确:

console.log("Authorization Header:", authorizationField);

对比Postman中手动生成的Authorization头,确保key:secret的拼接和Base64编码没有问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:55:20