> 文章列表 > node开通阿里云短信验证服务,代码演示 超级详细

node开通阿里云短信验证服务,代码演示 超级详细

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'); // 引入阿里云 SDKconst app = express();
app.use(express.json()); // 解析请求中的 JSON 数据const client = new Core({ // 创建 Client 对象accessKeyId: 'your xxxxxx', // 替换成自己的 AccessKey IDaccessKeySecret: 'your xxxxxx', // 替换成自己的 AccessKey Secretendpoint: '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'); // 引入阿里云 SDKconst 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再进行测试: