node之阿里云短信验证(uniapp)
#头条创作挑战赛#
后端:
注册阿里云后,搜索短信服务
填写签名 信息并提交:我这里用的是阿里赠送的测试
通过后记住签名名称 ,我这里用阿里测试
填写模板 信息并提交:我这里用的是阿里赠送的测试,模板就是你发给客户的短信信息内容
这里的code和模板CODE这两个是你以后要用到的,要记得。
获取accessKeyId和accessKeySecret
node端:安装阿里短信SDK
npm install @alicloud/pop-core --save
新建sms.js//sms.js /** * 阿里云短信验证码 */ const Core = require("@alicloud/pop-core"); // 引入模块 let smsCode = (res, mobile) => { var client = new Core({ accessKeyId: "LTAIIMck31tahuuR", // 你的阿里云accessKeyId accessKeySecret: "oCP98m3sXWj4rlY9ecIPdz9E8sCJLb", // 你的阿里云accessKeySecret endpoint: "https://dysmsapi.aliyuncs.com",// 不用改 apiVersion: "2017-05-25" // 不用改 }); var vcode = ""; // 随机6位数 for (var i = 0; i < 6; i++) { let n = Math.floor(Math.random() * 10) vcode += n === 0 ? "0" : n; } var params = { "RegionId": "cn-hangzhou", "PhoneNumbers": mobile, // 电话号码 "SignName": "阿里云短信测试专用", // 你的短信签名 "TemplateCode": "SMS_78875178", // 你的短信模板代码 // 短信模板变量对应的实际值,JSON格式,键‘code’要与你要记得code保持一致 "TemplateParam": `{"code":${vcode},"product":"test"}` } var requestOption = { method: "POST" }; client.request("SendSms", params, requestOption).then((result) => { console.log(JSON.stringify(result)); res.send({ vcode }) }, (ex) => { console.log(ex); res.send(ex) }) } module.exports = smsCode;
在node的入口文件main.js引入:const express = require("express") const cors = require("cors") const smsCode =require("./common/sms.js") const app = express() app.use(cors()) app.get("/",(req,res)=>{ res.send("index") }) //引入 app.get("/vcode",(req,res)=>{ let mobile = req.query.mobile console.log(mobile) smsCode(res, mobile) }) app.listen(3000,()=>{ console.log("服务器3000启动了…"); })
前端: data() { return { disable: false, mobile:18222959493, logininfo: { pwd: "123", acount: "昵称呀", vcode: 123, phone:"18222959493", num: 3, codestr: "获取验证码" },
sendCode() { if(this.vriphone()){ uni.request({ url:"http://192.168.0.105:3000/vcode", data:{ mobile:this.logininfo.phone }, method:"GET", success: (res) => { console.log(res); } }) const timer = setInterval(() => { this.disable = true; this.logininfo.codestr = this.logininfo.num + "s"; this.logininfo.num--; if (this.logininfo.num < 0) { this.logininfo.codestr = "重新发送"; this.disable = false; this.logininfo.num = 3; clearInterval(timer); } }, 1000); } uni.showToast({ title:"输入正确手机号", icon:"none" }) },