node开通阿里云短信验证服务,代码演示 超级详细
阿里云官网步骤:Node.js SDK (aliyun.com)
首先先搭建一个node项目:app.js
const express = require('express'); // 引入 Express 框架
const app = express();
app.use(express.json()); // 解析请求中的 JSON 数据
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
安装阿里云SDK核心库
npm install @alicloud/pop-core -S
编辑app.js
const express = require('express'); // 引入 Express 框架
const Core = require('@alicloud/pop-core'); // 引入阿里云 SDK
const app = express();
app.use(express.json()); // 解析请求中的 JSON 数据
const client = new Core({ // 创建 Client 对象
accessKeyId: 'your xxxxxx', // 替换成自己的 AccessKey ID
accessKeySecret: 'your xxxxxx', // 替换成自己的 AccessKey Secret
endpoint: 'https://dysmsapi.aliyuncs.com', // API 访问入口,根据实际情况修改
apiVersion: '2017-05-25' // API 版本号,根据实际情况修改
});
// 生成随机验证码
function generateCode() {
const code = Math.floor(Math.random() * (9999 - 1000 + 1)) + 1000;
return code.toString();
}
// 发送短信验证码
app.post('/sendCode', (req, res) => {
const phoneNumber = req.body.phoneNumber; // 获取手机号码
const code = generateCode(); // 生成验证码
const params = {
"RegionId": "cn-hangzhou", // 短信服务所在区域,可以参考阿里云文档
"PhoneNumbers": phoneNumber, // 目标手机号码
"SignName": "your xxxxxx", // 短信签名名称,需先在阿里云控制台中申请审核通过
"TemplateCode": "your xxxxxx", // 短信模板 CODE,需先在阿里云控制台中申请审核通过
"TemplateParam": JSON.stringify({ // 短信模板参数,为 JSON 字符串格式
"code": code // 模板中的变量名和对应的值
})
};
const requestOption = { // 设置请求超时时间等选项
method: 'POST',
timeout: 5000
};
// 调用 SendSms 方法发送短信
client.request('SendSms', params, requestOption).then((result) => {
console.log(result); // 打印发送结果
res.status(200).json({ // 返回状态码和生成的验证码
message: '验证码已发送,请注意查收!',
code: code
});
}, (ex) => {
console.log(ex); // 打印异常信息
res.status(500).json({ // 返回错误状态码和错误信息
message: '短信发送失败,请稍后重试!'
});
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
accessKeyId与accessKeySecret如何获取:
没有就创建一个,有就点击操作中的:查看 Secret
endpoint与apiVersion到底是什么?
endpoint
参数指定了短信服务的 API 网关地址,即阿里云短信服务的接入点;而 apiVersion
参数指定了该 API 请求要使用的版本号
附上连接:短信服务_云产品主页-阿里云OpenAPI开发者门户 (aliyun.com)
SignName与TemplateCode哪里获取?
这两个都需要自己申请,阿里云中搜索短信服务就可以看到图下的操作页面,然后进行申请就好:
通过之后点击图下的测试:
进去就可以看到了:
然后用postman进行测试:如果余额不足就需要买个短信套餐
在app.js中添加验证码校验请求:
const express = require('express'); // 引入 Express 框架
const Core = require('@alicloud/pop-core'); // 引入阿里云 SDK
const app = express();
app.use(express.json()); // 解析请求中的 JSON 数据
xxxxxxxxxxxxxxxxxxxxxxxxxx同上
// 验证短信验证码
app.post('/login', (req, res) => {
const phoneNumber = req.body.phoneNumber; // 获取手机号码
const inputCode = req.body.code; // 获取用户输入的验证码
const generatedCode = req.body.generatedCode; // 获取之前生成的验证码
console.log(inputCode)
console.log(generatedCode)
if (inputCode === generatedCode) { // 验证码一致,登录成功
res.status(200).json({
message: '登录成功!'
});
} else { // 验证码不一致,登录失败
res.status(401).json({
message: '验证码错误,请重新输入!'
});
}
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
用postman再进行测试: