本文将实现阿里云中短信服务的【短信验证码功能】
第一步先要到阿里云平台去申请短信签名和模版(如果已完成可以忽略这一步)
。
-
首选需要有阿里云账号,进入阿里云【短信服务控制台】,可以在搜索栏搜索短信服务
-
进入短信服务控制台后,点击 国内消息 >> 模版签名 >> 添加签名,按照提示去添加即可,蒹添加后就等待审核通过
-
添加短信模版, 点击 模版管理 >> 添加模版,根据提示添加,这次测试就用系统送的模版。
-
注意:
因为后续开发要用到的是数据是【签名名称】【模版CODE】【accessKeyId】【secretAccessKey】
,所以要做好准备。 accessKeyId 和 secretAccessKey 在右上角用户头像点击可以看到【AccessKey管理】,点击进去里面可以获取,注意,这id和key比较重要,千万不要暴露出去
。
短信模版的信息都准备好了之后,下面就可以开发程序了
- 首先需要确定是否安装express,如果已安装可以忽略这一步
cnpm install -g express-generator
- 然后用express创建一个项目
express sms_projects
- 进入sms_projects目录
cd sms_projects
- 初始化项目
cnpm install
- 安装阿里云短信服务模块
cnpm i @alicloud/sms-sdk --save
-
在app.js里修改代码,将短信接口模块单独出来
-
在routes文件夹下添加api.js文件
var express = require('express');
var router = express.Router();
//引入阿里云短信服务模块
const SMSClient = require('@alicloud/sms-sdk');
// 产生6位随机数(用来生成短信验证码的)
function getCode() {
let str = "";
for (let i = 0; i < 6; i++) {
str += parseInt(Math.random() * 10)
}
return str;
}
/ **
*这里写post请求接口,前端调用 http://localhost:3000/api/get_sms
*默认端口是3000,也可以在./bin/www里面修改
*/
router.post('/get_sms', function(req, res, next) {
let phoneNum = req.body.phone; //获取前端参数phone
console.log("手机号码", phoneNum);
//初始化sms_client
let smsClient = new SMSClient({
accessKeyId: 'LTAI4G**************', //accessKeyId 前面提到要准备的
secretAccessKey: 'C2w************' //secretAccessKey 前面提到要准备的
});
6位随机数
let str = getCode();
// 开始发送短信
smsClient.sendSMS({
PhoneNumbers: phoneNum,
SignName: "sign****", //签名名称 前面提到要准备的
TemplateCode: "SMS_**********", //模版CODE 前面提到要准备的
TemplateParam: `{"code":'${str}'}`, // 短信模板变量对应的实际值,JSON格式
}).then(result => {
console.log("result", result)
let {Code} = result;
if (Code == 'OK') {
res.json({
code: 0,
msg: 'success',
sms: str
})
console.log(result)
}
}).catch(err => {
console.log(err);
res.json({
code: 1,
msg: 'fail: ' + err.data.Message
})
})
});
module.exports = router;
- 这里写完之后,保存,在终端执行命令
npm start
之后,既可以运行了。这里只是简单实现了接入阿里云短信服务的短信功能,并没有做其他验证。可以相对改变一下,比如做注册短信验证,可以把生成的6位随机数也传给注册接口进行验证。这里就不多写了,自由发挥!!!!