调用腾讯云使用图像验证码

展示效果了:

腾讯云实现图像验证码着实比阿里云实现验证码容易。

web端口的验证码:

详情可以从腾讯云平台文档接入

验证码 Web 客户端接入-接入指引-文档中心-腾讯云 (tencent.com)

第一步:你需要购买腾讯云图像验证码的资源包<当然新手的话可以选择免费的500次进行实践>

登录腾讯云平台  登录 - 腾讯云  新建图形验证


 注册后

 获取CaptchaAppId 

 获取 AppSecretKey。

再到用户详情页面

 获取API 密钥

获取该子账号的 SecretId

        web端使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Web 前端接入示例</title>
    <!-- 验证码程序依赖(必须)。请勿修改以下程序依赖,如使用本地缓存,或通过其他手段规避加载,会导致验证码无法正常更新,对抗能力无法保证,甚至引起误拦截。 -->
    <script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>
</head>

<body>
    <button id="CaptchaId" type="button">验证</button>
</body>

<script>

    // 定义回调函数
    function callback(res) {
        // 第一个参数传入回调结果,结果如下:
        // ret         Int       验证结果,0:验证成功。2:用户主动关闭验证码。
        // ticket      String    验证成功的票据,当且仅当 ret = 0 时 ticket 有值。
        // CaptchaAppId       String    验证码应用ID。
        // bizState    Any       自定义透传参数。
        // randstr     String    本次验证的随机串,后续票据校验时需传递该参数。
        console.log('callback:', res);


        // res(用户主动关闭验证码)= {ret: 2, ticket: null}
        // res(验证成功) = {ret: 0, ticket: "String", randstr: "String"}
        // res(请求验证码发生错误,验证码自动返回terror_前缀的容灾票据) = {ret: 0, ticket: "String", randstr: "String",  errorCode: Number, errorMessage: "String"}
        // 此处代码仅为验证结果的展示示例,真实业务接入,建议基于ticket和errorCode情况做不同的业务处理
        if (res.ret === 0) {
            // 复制结果至剪切板
            var str = '【randstr】->【' + res.randstr + '】      【ticket】->【' + res.ticket + '】';
            var ipt = document.createElement('input');
            ipt.value = str;
            document.body.appendChild(ipt);
            ipt.select();
            document.execCommand("Copy");
            document.body.removeChild(ipt);
            alert('1. 返回结果(randstr、ticket)已复制到剪切板,ctrl+v 查看。\n2. 打开浏览器控制台,查看完整返回结果。');
        }
    }

    // 定义验证码js加载错误处理函数
    function loadErrorCallback() {
      var appid = ''
       // 生成容灾票据或自行做其它处理
      var ticket = 'terror_1001_' + appid + Math.floor(new Date().getTime() / 1000);
      callback({
        ret: 0,
        randstr: '@'+ Math.random().toString(36).substr(2),
        ticket,
        errorCode: 1001,
        errorMessage: 'jsload_error',
      });
    }

    // 定义验证码触发事件
    window.onload = function(){
        document.getElementById('CaptchaId').onclick = function(){
            try {
                  // 生成一个验证码对象
                  // CaptchaAppId:登录验证码控制台,从【验证管理】页面进行查看。如果未创建过验证,请先新建验证。注意:不可使用客户端类型为小程序的CaptchaAppId,会导致数据统计错误。
                  //callback:定义的回调函数
                  var captcha = new TencentCaptcha('你的验证码CaptchaAppId', callback, {});
                  // 调用方法,显示验证码
                  captcha.show(); 
            } catch (error) {
            // 加载异常,调用验证码js加载错误处理函数
                  loadErrorCallback();
            }
        }
    }
</script>

</html>

APP端使用

Android 接入详细步骤

  1. 在项目的工程中,新建一个 Activity 并导入 WebView 组件所需的包。
    import android.webkit.WebView;
    import android.webkit.WebSettings;
    import android.webkit.WebViewClient;
    import android.webkit.WebChromeClient;
  2. 添加相关权限,如开启网络访问权限以及允许 App 进行非 HTTPS 请求等。
    <uses-permission android:name="android.permission.INTERNET"/>
    <application android:usesCleartextTraffic="true">...</application>
  3. 在 Activity 的布局文件中,添加 WebView 组件。
    <WebView
    android:id="@+id/webview"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    />
  4. 在项目的工程中,添加自定义 JavascriptInterface 文件,并定义一个方法用来获取相关数据。
    import android.webkit.JavascriptInterface;
    public class JsBridge {
    @JavascriptInterface
    public void getData(String data) {
    System.out.println(data);
    }
    }
  5. 在 Activity 文件中,加载相关 H5 业务页面。
    public class MainActivity extends AppCompatActivity {
    private WebView webview;
    private WebSettings webSettings;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    }
    
    private void initView() {
    webview = (WebView) findViewById(R.id.webview);
    webSettings = webview.getSettings();
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);
    // 禁用缓存
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
    webview.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
    }
    });
    // 开启js支持
    webSettings.setJavaScriptEnabled(true);
    webview.addJavascriptInterface(new JsBridge(), "jsBridge");
    // 也可以加载本地html(webView.loadUrl("file:///android_asset/xxx.html"))
    webview.loadUrl("https://x.x.x/x/");
    }
    }

微信小程序端接入

微信小程序没有实践过,链接在这里很详细,需要的可以实践下

验证码 微信小程序接入-接入指引-文档中心-腾讯云 (tencent.com)

展示效果

 第一步:你需要去微信开放平台申请天御验证码第三方插件。

 PS:如果添加插件这边搜索不到天御验证码插件你可以先看下去,本文后续会告诉你如何解决。

第二步:往app.json,项目js,项目json,项目wxml中添加相关代码

app.json:

  "plugins": {
    "myPlugin": {
        "version": "1.0.4",
        "provider": "wxb302e0fc8ab232b4"
    }
  },

项目json:

  "usingComponents": {
    "t-captcha": "plugin://myPlugin/t-captcha"
   }

项目js:

  login: function () {
    this.selectComponent('#captcha').show()
    // 进行业务逻辑,若出现错误需重置验证码,执行以下方法
    // if (error) {
    //     this.selectComponent('#captcha').refresh()
    // }
  },

  // 验证码验证结果回调
  handlerVerify: function (ev) {
      // 如果使用了 mpvue,ev.detail 需要换成 ev.mp.detail
      if(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)
  },

项目wxml:

<view>
  <!-- app-id:验证码CaptchaAppId, 从腾讯云的验证码控制台中获取, 在验证码控制台页面内【图形验证】>【验证列表】进行查看 -->
  <t-captcha
        id="captcha"
        app-id="****"    //这里需要上腾讯云申请获取captchAppId
        bindverify="handlerVerify"
        bindready="handlerReady"
        bindclose="handlerClose"
        binderror="handlerError" />
    <button bindtap='login'>登陆</button>
</view>

上腾讯云获取天宇验证码的captchAppId

 上面PS解决方案

如果你未申请插件/找不到插件,你将以上的基础配置引入后会出现这么个问题:

然后你就直接点击添加或者详情追进去,就直接到了天御验证码第三方插件的页面了

点击添加【自行解决类目和主体问题】

 

到此基于腾讯云的三种图像验证码讲解完毕,觉得有用的可以给博主点个赞支持下

                     啊┏ (゜ω゜)=☞   币                        币━━( ̄ー ̄*|||━━赞

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值