微信小程序接入腾讯云验证码的方法步骤


Posted in Javascript onJanuary 07, 2020

前言:最近做了一个小程序抽奖的活动,出现了部分用户恶意薅羊毛的现象,因此考虑接入腾讯云的验证码。

其实腾讯的官方文档写的相当清晰:https://cloud.tencent.com/doc...
不想啃文档的筒子们的就往下继续看吧~(虽然大同小异)

整体效果

1、小程序触发验证,跳转到验证码小程序
2、在验证码小程序内通过验证,并携带参数跳回原来的小程序
3、在原来的小程序内,监测携带回的参数,并作后续操作

前提条件

验证码接入前,需要先在验证码控制台中注册 AppID 和 AppSecret,注册完成后,您可以在控制台的基础配置中查看 AppID (下文extraData中使用) 以及 AppSecret。

注意,这里的 appId 和 appSecret 和小程序后台的是不一致的!

接入步骤

1、在你需要的地方,唤起验证码小程序

首先在 app.json 配置 navigateToMiniProgramAppIdList,如下:

{
 "navigateToMiniProgramAppIdList": ["wx5a3a7366fd07e119"]
}

这个appId是官方文档中直接提供的,搬上去就好。

假设你的唤起方式是通过一个这样的按钮事件:

<button bindtap="toTCaptcha">验证</button>
toTCaptcha: function () {
  wx.navigateToMiniProgram({
   appId: 'wx5a3a7366fd07e119',
   path: '/pages/captcha/index',
   extraData: {
    appId: 'appId' //您申请的验证码的 appId
   }
  })
 }

2、在 app.js 获取验证结果

由于小程序间相互跳转过程中产生的数据仅能在 app.js 中获取到,故需要在 app.js 的 onShow 中添加以下代码,来捕获验证结果 captchaResult

App({
 // ...
 onShow: function(options) {
  // 解决各类回调的兼容问题
  if (!this.captchaTicketExpire) this.captchaTicketExpire = {};

  if (options.scene === 1038 && options.referrerInfo.appId === 'wx5a3a7366fd07e119') {
   const result = options.referrerInfo.extraData;
   if (result.ret === 0) {
    const ticket = result.ticket;
    if (!this.captchaTicketExpire[ticket]) {
     this.captchaResult = result;
     this.captchaTicketExpire[ticket] = true;
    }
   } else {
    // 用户关闭了验证码
    // 这里可以加上一些验证失败提示
   }
  }
 },
 // ...
});

验证结果(captchaResult) 参数说明:

微信小程序接入腾讯云验证码的方法步骤

3、将验证结果返回至服务端校验

在小程序页面的 onShow 阶段,将验证结果及待提交的表单数据一起提交到服务器,进行校验。

// page.js
const app = getApp()

Page({
 data: {
  // ...
 },
 onShow() {
  const captchaResult = app.captchaResult;
  app.captchaResult = null; // 验证码的票据为一次性票据,取完需要置空
  if (captchaResult && captchaResult.ret === 0) {
   // 将验证码的结果返回至服务端校验,以及后续的操作
   // const ticket = captchaResult.ticket;
   // const randstr = captchaResult.randstr;
  }
 },
 // ...
});

用一个词描述这个开发过程:搬上去!

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

Javascript 相关文章推荐
JavaScript 获取用户客户端操作系统版本
Aug 25 Javascript
javascript 面向对象全新理练之数据的封装
Dec 03 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
Sep 25 Javascript
ListBox实现上移,下移,左移,右移的简单实例
Feb 13 Javascript
在JavaScript中使用timer示例
May 08 Javascript
AngularJS入门教程之双向绑定详解
Aug 18 Javascript
Vue中建立全局引用或者全局命令的方法
Aug 21 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
解决vue router组件状态刷新消失的问题
Aug 01 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
Sep 21 Javascript
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
JavaScript实现跟随鼠标移动的盒子
Jan 28 Javascript
vue实现数据控制视图的原理解析
Jan 07 #Javascript
微信小程序wx.navigateTo方法里的events参数使用详情及场景
Jan 07 #Javascript
详解微信小程序之提高应用速度小技巧
Jan 07 #Javascript
小程序跨页面交互的作用与方法详解
Jan 07 #Javascript
JavaScript实现联动菜单特效
Jan 07 #Javascript
JS实现电商商品展示放大镜特效
Jan 07 #Javascript
JS实现字体背景跑马灯
Jan 06 #Javascript
You might like
php 中include()与require()的对比
2006/10/09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
php+mysql实现的二级联动菜单效果详解
2016/05/10 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
2018/04/27 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
Bootstrap进度条实现代码解析
2017/03/07 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
vue中$set的使用(结合在实际应用中遇到的坑)
2018/07/10 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
vue+koa2搭建mock数据环境的详细教程
2020/05/18 Javascript
Python字符遍历的艺术
2008/09/06 Python
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
python实现对列表中的元素进行倒序打印
2019/11/23 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
单位在职证明范本
2014/01/09 职场文书
应届大学生自荐书
2014/06/17 职场文书
个人剖析材料范文
2014/09/30 职场文书
领导参观欢迎词
2015/01/26 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
2021/06/23 Python
Python 可迭代对象 iterable的具体使用
2021/08/07 Python
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis