uniapp 各个端接入腾讯滑动行为验证码示例

ops/2024/10/19 7:31:04/

验证调起页面:

<template><view class="app"><text>{{ obj.ret }}</text><button @click="varify">验证</button></view>
</template><script>export default{data(){return{obj: {}}},onLoad() {// #ifdef H5var script = document.createElement('script');script.src = "https://turing.captcha.qcloud.com/TCaptcha.js";document.body.appendChild(script);// #endif},onShow() {this.obj = uni.getStorageSync('capture_succss')console.log(uni.getStorageSync('capture_succss'));//拿到数据后进行处理},methods:{callback(res) {let that = thisif (res.ret === 0) {//验证通过} else {//验证失败}},varify() {// #ifdef H5let appid = '194178755';let captcha = new TencentCaptcha(appid, this.callback);captcha.show();// #endif// #ifdef APP | MP-WEIXINuni.navigateTo({url:'/pages/index/index'})// #endif}}}
</script><style>
</style>

其他页面:

<!--index.html-->
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||CSS.supports('top: constant(a)'))document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +(coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><title></title><!--preload-links--><!--app-context--></head><body><div id="app"><!--app-html--></div><script type="module" src="/main.js"></script></body>
</html>

 App | 小程序 验证页面:

<template><view><!-- #ifdef APP --><web-view src="/hybrid/html/local.html"  @message="callback"></web-view><!-- #endif --><!-- app-id:验证码CaptchaAppId, 从腾讯云的验证码控制台中获取, 在验证码控制台页面内【图形验证】>【验证列表】进行查看 --><!-- #ifdef MP-WEIXIN --><t-captchaid="captcha"app-id="194178755"@verify="handlerVerify"@ready="handlerReady"@close="handlerClose"@error="handlerError" /><button @click="login">登录</button><!-- #endif --></view>
</template>
<script>export default {data() {return {}},methods: {callback: function(res) { //接收网页传给uniapp组件的参数let r = res.detail.data[0].res;if (r.ret === 0) {// #ifdef APPuni.setStorageSync('capture_succss',r)// #endifuni.navigateBack()//接受到参数就可以跳转到想去的界面或者关闭此界面等} else {console.log('验证失败')}},login: function () {this.selectComponent('#captcha').show()// 进行业务逻辑,若出现错误需重置验证码,执行以下方法// if (error) {// this.selectComponent('#captcha').refresh()// }},// 验证码验证结果回调handlerVerify: function (ev) {// 如果使用了 mpvue,ev.detail 需要换成 ev.mp.detailif(ev.detail.ret === 0) {// 验证成功console.log('ticket:', ev.detail.ticket)} else {// 验证失败// 请不要在验证失败中调用refresh,验证码内部会进行相应处理}},    // 验证码准备就绪handlerReady: function () {console.log('验证码准备就绪')},    // 验证码弹框准备关闭handlerClose: function (ev) {// 如果使用了 mpvue,ev.detail 需要换成 ev.mp.detail,ret为0是验证完成后自动关闭验证码弹窗,ret为2是用户主动点击了关闭按钮关闭验证码弹窗if(ev && ev.detail.ret && ev.detail.ret === 2){console.log('点击了关闭按钮,验证码弹框准备关闭');} else {console.log('验证完成,验证码弹框准备关闭');}},// 验证码出错handlerError: function (ev) {console.log(ev.detail.errMsg)}},}
</script>

App验证需要的H5源码:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><meta name="viewport"content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" /><title>验证码</title><style type="text/css">.app {width: 100%;height: 50px;padding: 20px 10px;}</style></head><body bgcolor="#121110"><div class="app"><button id="tencentBtn" class="btn" type="button" data-action="navigateBack">返回</button></div><!-- uni 的 SDK --><!-- 需要把 uni.webview.1.5.4.js 下载到自己的服务器 --><script type="text/javascript" src="https://unpkg.com/@dcloudio/uni-webview-js@0.0.3/index.js"></script><script type="text/javascript" src="https://turing.captcha.qcloud.com/TCaptcha.js"></script><script>document.addEventListener('UniAppJSBridgeReady', function() {	//确认是否加载好了TencentCaptchalet appid = '194178755'; // 腾讯云控制台中对应这个项目的 appidlet callback = function(res) {//操作验证码后吧回调信息传递给web-viewif(res.ret == 0){uni.postMessage({data: {res: res}});document.getElementById('tencentBtn').click()}}let captcha = new TencentCaptcha(appid, callback);// 滑块显示captcha.show();document.querySelector('.app').addEventListener('click', function(evt) {var target = evt.target;if (target.tagName === 'BUTTON') {var action = target.getAttribute('data-action');switch (action) { case 'navigateBack':uni.navigateBack({delta: 1});break;default:break;}}});});</script></body>
</html>

效果展示:

H5:

App:

小程序:


http://www.ppmy.cn/ops/110204.html

相关文章

项目总结 普通模式 相框模式

目录 一、相框选择对话框 1、数据结构定义 1)、模式枚举 2)、相框模式下,不显示连麦者时,确定具体显示模式 3)、初始化布局 4)、转换布局 5)、手动切换布局 6)、切换时机 6.1)、右键菜单 6.2)、相框模式选择 2、跳出相框模式对话框时机 0)、初始化 1)、…

【Java并发编程一】八千字详解多线程

目录 多线程基础 1.线程和进程 线程是什么&#xff1f; 为啥要有线程&#xff1f; 进程和线程的区别&#xff1f; Java 的线程 和 操作系统线程 的关系 使用jconsole观察线程 2.创建线程的多种方式 3.Thread类及其常见方法 Thread类的常见构造方法 Thread类的常见属性…

Linux系统性能调优的精髓:实战技巧解析

感谢浪浪云支持发布 浪浪云活动链接 &#xff1a;https://langlangy.cn/?i8afa52 文章目录 1. 影响Linux系统性能的常见因素2. 快速排除故障的方法CPU 性能分析内存性能分析磁盘和文件系统 I/O 性能分析网络性能分析 3. 排查系统负载过高的原因和瓶颈4. 找出占用负载前5的进程…

如何在Flask中实现用户认证

在Flask中实现用户认证通常涉及几个关键步骤&#xff1a;使用第三方库&#xff08;如Flask-Login或Flask-Security&#xff09;、用户数据管理、登录表单处理、会话管理以及保护需要认证的路由。以下是使用Flask-Login库实现用户认证的基本步骤&#xff1a; 1. 安装Flask-Logi…

UDS 诊断 - RequestTransferExit(请求传输终止)(0x37)服务

UDS 诊断服务系列文章目录 诊断和通信管理功能单元 UDS 诊断 - DiagnosticSessionControl&#xff08;诊断会话控制&#xff09;&#xff08;0x10&#xff09;服务 UDS 诊断 - ECUReset&#xff08;ECU重置&#xff09;&#xff08;0x11&#xff09;服务 UDS 诊断 - SecurityA…

性能测试-jmeter连接数据库(十七)...

百度服务器域名&#xff1a;www.baidu.com 百度的IP&#xff1a;110.242.68.3&#xff08;使用ping www.baidu.com&#xff09; jdbc:mysql://211.103.136.244:7061/test_db: mysql是数据库类型211.103.136.244是服务器IP7061是服务器端口号test_db是服务器的数据库 一、为…

Linux常见运维命令

lscpu socket lsblk 硬盘 ip a free -mh 内存 lspci -nn | grep -i nvidia 修改ipmi地址 ipmitool lan print ipmitool -I open lan set 1 ipsrc static 设置本地BMC地址为静态&#xff0c;才能设置IP ipmitool -I open lan set 1 ipaddr 192.168.0.51 设置本地BMC的IP地址 ipm…

Axure设计之全屏与退出全屏交互实现

在Axure RP中&#xff0c;设计全屏与退出全屏的交互功能可以极大地提升用户体验&#xff0c;尤其是在展示产品原型或进行演示时。本文将详细介绍如何在Axure RP中通过结合JavaScript代码实现全屏与退出全屏的交互效果。 ​ Axure原型设计web端交互元件库&#xff1a;https://…