如何使用Message Resource?API认证错误及Node.js实现咨询
解决Twilio消息状态查询的认证问题及Node.js实现
一、401认证错误的原因
你调用的Twilio API要求HTTP基本认证,必须在请求中携带你的Twilio Account Sid(作为用户名)和Auth Token(作为密码),你没提供这组凭证才会触发该错误。
二、修复API请求的认证问题
不管用哪种方式发起请求,都需要添加认证信息:
- 用curl命令的格式:
curl -u "你的Account Sid:你的Auth Token" "https://api.twilio.com/2010-04-01/Accounts/你的Account Sid/Messages/你的Message Sid.json" - 用Postman等工具时,在认证选项选择「Basic Auth」,填入Account Sid和Auth Token即可。
三、Node.js实现方式
方式1:使用Twilio官方SDK(推荐)
官方SDK已封装认证和请求逻辑,更简洁可靠:
- 先安装SDK:
npm install twilio - 编写查询代码:
const twilio = require('twilio'); // 替换为你的真实凭证和要查询的Message Sid const accountSid = '你的Account Sid'; const authToken = '你的Auth Token'; const targetMessageSid = '要查询的Message Sid'; const client = twilio(accountSid, authToken); client.messages(targetMessageSid) .fetch() .then(message => { console.log('消息当前状态:', message.status); // 可按需获取其他消息详情 console.log('消息详情:', { 发送号码: message.from, 接收号码: message.to, 消息内容: message.body }); }) .catch(err => console.error('查询失败:', err));
方式2:使用Node.js原生HTTP模块
如果不想依赖SDK,可手动实现基本认证:
const https = require('https'); const accountSid = '你的Account Sid'; const authToken = '你的Auth Token'; const targetMessageSid = '要查询的Message Sid'; // 生成Base64编码的认证头内容 const authHeader = `Basic ${Buffer.from(`${accountSid}:${authToken}`).toString('base64')}`; const requestOptions = { hostname: 'api.twilio.com', path: `/2010-04-01/Accounts/${accountSid}/Messages/${targetMessageSid}.json`, headers: { 'Authorization': authHeader } }; https.get(requestOptions, (res) => { let responseData = ''; res.on('data', chunk => responseData += chunk); res.on('end', () => { const result = JSON.parse(responseData); if (res.statusCode === 200) { console.log('消息当前状态:', result.status); } else { console.error('查询出错:', result); } }); }).on('error', err => console.error('请求异常:', err));
四、Twilio短信常见状态说明
queued:消息已排队等待发送sending:正在发送过程中sent:消息已成功发出delivered:消息已送达接收方undelivered:消息无法送达failed:发送失败
内容的提问来源于stack exchange,提问作者user349557
相关产品推荐
相关产品推荐

