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


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 相关文章推荐
jquery图形密码实现方法
Mar 11 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
Apr 29 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
Jan 23 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
JS实现弹出下载对话框及常见文件类型的下载
Jul 13 Javascript
详解Vue.js Mixins 混入使用
Sep 15 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
Vuex mutitons和actions初使用详解
Mar 04 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
Jun 06 Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 Javascript
Layui弹出层 加载 做编辑页面的方法
Sep 16 Javascript
js实现点击生成随机div
Jan 16 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
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
javascript设置金额样式转换保留两位小数示例代码
2013/12/04 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
js图片加载效果实例代码(延迟加载+瀑布流加载)
2017/05/12 Javascript
vue中的scope使用详解
2017/10/29 Javascript
vue.js实现点击后动态添加class及删除同级class的实现代码
2018/04/04 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
通过vue.extend实现消息提示弹框的方法记录
2021/01/07 Vue.js
Eclipse + Python 的安装与配置流程
2013/03/05 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
django2.0扩展用户字段示例
2019/02/13 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
双十佳事迹材料
2014/01/29 职场文书
学校督导评估方案
2014/06/10 职场文书
元旦晚会活动总结
2014/07/09 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
学习nginx基础知识
2021/09/04 Servers