其實騰訊的官方文檔寫的至關清晰:https://cloud.tencent.com/doc...
不想啃文檔的筒子們的就往下繼續看吧~(雖然大同小異)json
一、小程序觸發驗證,跳轉到驗證碼小程序
二、在驗證碼小程序內經過驗證,並攜帶參數跳回原來的小程序
三、在原來的小程序內,監測攜帶回的參數,並做後續操做小程序
驗證碼接入前,須要先在驗證碼控制檯中註冊 AppID 和 AppSecret,註冊完成後,您能夠在控制檯的基礎配置中查看 AppID (下文extraData中使用) 以及 AppSecret。 服務器
注意,這裏的 appId 和 appSecret 和小程序後臺的是不一致的!app
首先在 app.json 配置 navigateToMiniProgramAppIdList,以下:this
{ "navigateToMiniProgramAppIdList": ["wx5a3a7366fd07e119"] }
這個appId是官方文檔中直接提供的,搬上去就好。spa
假設你的喚起方式是經過一個這樣的按鈕事件:code
<button bindtap="toTCaptcha">驗證</button>
toTCaptcha: function () { wx.navigateToMiniProgram({ appId: 'wx5a3a7366fd07e119', path: '/pages/captcha/index', extraData: { appId: 'appId' //您申請的驗證碼的 appId } }) }
因爲小程序間相互跳轉過程當中產生的數據僅能在 app.js 中獲取到,故須要在 app.js 的 onShow 中添加如下代碼,來捕獲驗證結果 captchaResultblog
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) 參數說明:
事件
在小程序頁面的 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; } }, // ... });