借助云开发实现小程序短信验证码的发送


Posted in Javascript onJanuary 06, 2020

最近在做小程序验证码登陆时,用到了短信发送验证码的需求,自己也研究了下,用云开发结合云函数来实现验证码短信发送还是很方便的。

老规矩,先看效果图

借助云开发实现小程序短信验证码的发送

这是我调用腾讯云的短信平台发送的登陆验证码。核心代码其实只有下面这么多

借助云开发实现小程序短信验证码的发送

是不是感觉实现起来特别简单,怎么说呢,我们代码调用其实就这么几行,就可以实现短信的发送,但是腾讯云短信模板的审核比较繁琐,还有我们先去申请短信模板,短信模板审核通过后才可以使用。
我们就先来说代码实现,然后再带大家简单的学习下短信模板的申请。

一,安装node类库

其实我们这里用到了云开发的云函数,我们是在云函数里调用短信发送的。为什么要在云函数里调用呢,因为我们做短信发送,需要用到腾讯云的一个短信发送的类库,而这个类库是node库,所以只能在云函数里调用了。

在安装这个类库之前,我们需要先创建一个云函数,关于云函数的创建,我其实已经讲过很多遍了,不知道的同学,去翻看下我的历史文章,或者看下我录制的云开发入门视频《5小时零基础入门小程序云开发》

我后面也会把这节内容录制出视频出来。

创建完云函数后,右键点击在终端中打开,打开终端后,在终端中输入以下命令来安装qcloudsms_js类库

npm install qcloudsms_js

借助云开发实现小程序短信验证码的发送

这里需要注意,我们安装类库前需要先下载node并配置npm环境变量,这里我也有写文章的
《nodeJs的安装与npm全局环境变量的配置》

二,编写云函数

上面类库安装好以后,我们就可以来编写云函数了。

其实代码编写起来很简单,就下面这些,对应的注解我也都已经写出来了。

借助云开发实现小程序短信验证码的发送

这里要发送的手机号,和随机验证码需要动态传进来的。

三,调用云函数

调用云函数这里也很简单,我们需要传入手机号和验证码

借助云开发实现小程序短信验证码的发送

手机号这里,我做了一个输入框,可以动态的输入。验证码的话,我写了一个方法来随机生成数字和字母的组合验证码。

借助云开发实现小程序短信验证码的发送

我等下会把完整的代码贴出来给大家。

借助云开发实现小程序短信验证码的发送

这样我们输入完手机号以后,点击发送短信按钮,就可以成功的发送短信给到对应的手机号了。

可以看到我们生成的随机验证码如下

借助云开发实现小程序短信验证码的发送

我们手机接受到的短信验证码如下

借助云开发实现小程序短信验证码的发送

这样我们做登陆或者做校验时,用户手机短信收到的验证码,和我们随机生成的验证码一样,即代表用户验证成功。

完整的index.js代码给大家贴出来

var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
let phone = ''
Page({
//获取随机验证码,n代表几位
generateMixed(n) {
var res = "";
for (var i = 0; i < n; i++) {
 var id = Math.ceil(Math.random() * 35);
 res += chars[id];
}
return res;
},
//调用云函数发送短信
sendSMS() {
if (phone.length != 11) {
 wx.showToast({
 icon: 'none',
 title: '输入11位手机号',
 })
 return
}
let code = this.generateMixed(4)
console.log('本地生成的验证码', code)
wx.cloud.callFunction({
 name: "sendSms",
 data: {
 phone: phone,
 code: code //生成4位的验证码
 }
}).then(res => {
 console.log('发送成功', res)
}).catch(res => {
 console.log('发送失败', res)
})
},
//获取要发送的手机号
getPhone(event) {
console.log(event.detail.value)
phone = event.detail.value
},
})

index.wxml如下

借助云开发实现小程序短信验证码的发送

到这里我们的短信验证码的发送就完整的实现了,是不是很简单。

短信发送参数的设置与获取

首先是去腾讯云自己开通短信功能,然后需要自己去申请模板,填写签名。

借助云开发实现小程序短信验证码的发送

我这里把所需要的参数,都给大家标准出来了。大家只需要自己去官网设置对应的模板和签名,然后审核通过后,把对应的参数放到我们的云函数里即可。

短信验证的原理讲解

在网上找了一张短信验证的原理图,如下

借助云开发实现小程序短信验证码的发送

大家可以对照这看下,这个原理图。对应的源码我上面其实已经给大家贴出来了。

如果大家觉得不完整,我也已经把完整源码放到网盘里了,有需要的同学可以到我公号里回复“短信”获取源码。

借助云开发实现小程序短信验证码的发送

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
html 锁定页面(js遮罩层弹出div效果)
Oct 27 Javascript
javascript打印输出json实例
Nov 11 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
Sep 02 Javascript
JS更改select内option属性的方法
Oct 14 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
Nov 25 Javascript
IScroll那些事_当内容不足时下拉刷新的解决方法
Jul 18 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
Jun 17 Javascript
VUE实现一个分页组件的示例
Sep 13 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
May 22 Javascript
浅谈Layui的eleTree树式选择器使用方法
Sep 25 Javascript
原生Js 实现的简单无缝滚动轮播图的示例代码
May 10 Javascript
React学习之受控组件与数据共享实例分析
Jan 06 #Javascript
Node.js创建一个Express服务的方法详解
Jan 06 #Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 #Javascript
基于jQuery实现挂号平台首页源码
Jan 06 #jQuery
JS实现音乐导航特效
Jan 06 #Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 #Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 #Javascript
You might like
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
解决eclipse中没有js代码提示的问题
2018/10/10 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python解析xml文件实例分享
2013/12/04 Python
Python装饰器的函数式编程详解
2015/02/27 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
Python记录详细调用堆栈日志的方法
2015/05/05 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
儿童编程python入门
2018/05/08 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
2018/12/13 Python
Python 实现opencv所使用的图片格式与 base64 转换
2020/01/09 Python
纽约和芝加哥当天送花:Ode à la Rose
2019/07/05 全球购物
如何用Lucene索引数据库
2016/02/23 面试题
物理研修随笔感言
2014/02/14 职场文书
开学典礼感言
2014/02/16 职场文书
2014年端午节活动方案
2014/03/11 职场文书
公司委托书格式范本
2014/09/16 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
演讲稿之我的初心我的成长
2019/08/12 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL