微信小程序一键授权之前勾选协议

2023-11-05

微信小程序授权获取手机号之前勾选我已阅读并同意协议

想要实现的效果:用户点击微信一键注册按钮,如果用户没有勾选协议,就提示请勾选用户协议,如果勾选了,就直接获取微信用户的手机号密文。

开始想的是直接在getPhoneNumber()方法中加一个判断。这种做法存在的问题是,没有勾选协议的情况下点击按钮后弹出授权页面,会挡住前面加的判断提示,点击授权同意后才会看到提示请勾选用户协议的提示框。然后勾选协议再次点击按钮时又出现授权弹框,用户体验不好。

解决方法:
wxml页面写两个一模一样的按钮,绑定不同的方法,显示隐藏加一个判断,判断条件是是否勾选,勾选的话就调用获取手机号方法,没勾选的话显示点击弹出提示勾选的方法。
在这里插入图片描述

代码如下:

wxml文件:

<view class='choose'>选择注册方式</view>
    <button class='btn-getphone' bindtap='showtips' wx:if="{{agree == ''}}">
      <image src='/images/weixin.png'></image>
      <label>微信一键注册</label>
    </button>
    <button class='btn-getphone' open-type="getPhoneNumber" wx:if="{{agree != ''}}" bindgetphonenumber="getPhoneNumber">
      <image src='/images/weixin.png'></image>
      <label>微信一键注册</label>
    </button>
    <label class="checkbox">
     <checkbox-group bindchange="checkboxChange">
        <checkbox value="agree" checked="true"/>
        我已阅读并同意
      </checkbox-group>
      <label style='color:#CCAE73' bindtap='toprotocol'>
      《****用户协议》
      </label>
    </label>
</view>

js文件

  data: {
    agree:'agree'  				//默认勾选状态
  },
  //获取手机号
getPhoneNumber: function (e) {
    var that = this;
    if (this.data.agree == ''){
      wx.showToast({
        title: '请勾选用户协议',
        icon: 'none',
        duration: 2000
      })
    }
    if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
        wx.showToast({
          title: '您已取消授权',
          icon: 'none',
          duration: 2000
        })
      } else {
      console.log("同意授权手机号")
      console.log(e);
      var number = e;
      wx.login({
        success: function (res) {
          if (res.code) {
            net.mylog("code是" + res.code);
            net.request_post(false, myurl + '/wx/getInfo',
              { code: res.code },
              function (res2) {
                //请求接口解密
                console.log(number)
                var pc = new WXBizDataCrypt(config.appId, res2.data.session_key)
                var data = pc.decryptData(number.detail.encryptedData, number.detail.iv);
                console.log(data.phoneNumber);
                that.submitRegister(data.phoneNumber); //提交注册信息
              })
          } else {
            wx.showToast({
              title: "获取手机号码失败",
              icon: 'none',
              duration: 2000
            })
          }
        },
        fail: function (error) {
          wx.showToast({
            title: "获取手机号码失败",
            icon: 'none',
            duration: 2000
          })
        }
      }) 
      }
  } ,


上面代码中,在util.js文件夹中新建工具类封装方法。(在页面中调用封装的方法时,要记得引用)
var net = require("../../../utils/netTools.js");


封装post请求:
function request_post(auto,url, data, success, fail) {
    if(auto==true){
      wx.showLoading({
        title: '加载中',
      })
    }
    wx.request({
      url: url, //接口地址
      data: data,
      method: 'POST',
      header: {
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
      },
      success: function (res) {
        // console.log(res); 
        if (auto == true) {
          wx.hideLoading();
        }
        if (res.data.code==200) {
          success(res.data);
        }else {
            wx.showToast({
              title: res.data.msg,
              icon: 'none',
              duration: 2000
            })
        }
      },
      fail:function(){
        wx.showToast({
          title: "服务异常",
          icon: 'none',
          duration: 2000
        })
        if (auto == true) {
          wx.hideLoading();
        }
        if(fail != null){
          fail();
        }
      }
    })
  }
module.exports = {
  request_post: request_post
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序一键授权之前勾选协议 的相关文章

  • 锂电池为啥会爆炸

    前段时间 三星公司的旗舰智能手机GalaxyNote 7一直牢牢占据着新闻头条 这倒不是因为它的性能或是设计有多么出众 当然Note7的性能和设计的确很好 而是因为其在上市后的短时间内 即被发现内置电池存在重大安全隐患 手机无故发生爆炸的几
  • JSP基本语法

    JSP基本语法 1 1 JSP页面的基本结构 1 在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面 JSP页面有五种元素组成 普通的HTML标记和JavaScript标记 JSP标记 如指令标记 动作标记 变量
  • 3.1 简单变量

    为把信息存储在计算机中 程序必须记录3个基本属性 信息将存储在哪里 要存储什么值 存储何种类型的信息

随机推荐

  • java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException

    IDEA也没提示错误 但是跑单元测试的时候报错 加入以下依赖正常 gt
  • Linux上快速安装软RAID详细步骤

    物理环境 虚拟机CentOS6 4 配置 8G内存 2 2核cpu 3块虚拟硬盘 sda sdb sdc sdb和sdc是完全一样的 在实际生产环境中 系统硬盘与数据库和应用是分开的 这样有利于系统的维护和对数据应用的使用 本环境中将sda
  • tcp/udp建立连接并通信的过程

    基于TCP的socket编程的服务器程序流程如下 1 创建套接字 SOCKETsockSrv socket AF INET SOCK STREAM 0 2 将套接字绑定到本地地址和端口上 SOCKADDR INaddrSrv addrSrv
  • 利用Android Studio自带的模拟器联网

    Android Studio自带的模拟器本身默认是不能上网的 因为默认DNS为10 0 2 3 使用这个DNS是不能上网的 网上很多帖子已经给出了解决办法 但是会遇到下面这种情况 通过继续查询得知 通过shell命令设置 获取 IP 网关
  • 蓝桥杯真题系列:C语言A组奇妙的数字

    小明发现了一个奇妙的数字 它的平方和立方正好把0 9的10个数字每个用且只用了一次 你能猜出这个数字是多少吗 请填写该数字 不要填写任何多余的内容 这个题题意比较简单 解决办法也是非常简单 暴力即可 主要数据结构哈希表的运用 哈希表用来记录
  • 烟波钓叟赋注解。

    先理解一下烟波钓叟赋 奇门遁甲 的排盘过程 前言 基本数制系统 中国文化 12个数以内叫掌握 一掌內还可以握更多的数 易有太极 是生两仪 两仪生四象 四象生八卦 太极为1 两仪为阴阳 三奇就是乙丙丁 四象 左青龙 右白虎 南朱雀 北玄武 五
  • Qt将十二位整形十进制转换成十六进制,在转为ascii字符,并下发串口。在接受端完整还原这个十二位的十进制数。

    可以按照以下步骤进行操作 将十进制数123456789012转换成十六进制字符串 QString hexString QString 1 arg 123456789012ull 0 16 其中 1表示替换第1个参数 0表示输出的最小位数为0
  • 微信小程序环境配置过程

    微信小程序简介 可以通过阅读微信官方文档对小程序有一个初步的了解 在官方文档内也可以学习到如何进行小程序的环境配置 官方文档链接如下 https developers weixin qq com miniprogram dev framew
  • jsonEdit编辑器

    json格式化编辑器 源码做了部分修改 支持导入及手动编辑
  • 再论PID,PID其实很简单。。。

    0 PID前言 PID已经有105年的历史了 它并不是什么很神圣的东西 大家一定都见过PID的实际应用类似于这种 需要将某一个物理量 保持稳定 的场合 比如维持平衡 稳定温度 转速等 PID都会派上大用场 那么问题来了 比如 我想控制一个
  • 【汽车电子】浅谈汽车四大总线:LIN、CAN、FlexRay、MOST

    目录 1 前言 2 汽车四大总线 2 1 LIN总线 2 1 1 LIN总线概述 2 1 2 LIN总线工作原理 2 2 CAN总线 2 2 1 CAN总线概述 2 2 2 CAN总线工作原理 2 2 3 CAN总线的优点 2 3 Flex
  • 【前端

    图 先看一个例子 html div class container div class item 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容 内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
  • js逆向--有道翻译

    目录 1 前言 2 起因 3 经过 4 结果 1 前言 分类 js逆向 语言 python 2 起因 记录一下js逆向入门案例 3 经过 分析案例 有道翻译是通过ajax的post请求获得的响应结果 打开开发者工具获取post请求时需要提交
  • Ubuntu16.04上升级NVIDIA显卡驱动及安装CUDA10.0操作步骤

    Ubuntu 16 04上已装有CUDA 8 0 现在想再安装CUDA 10 0 由于已安装的显卡驱动版本396 54不支持CUDA 10 0 因此安装CUDA 10 0之前需要先升级显卡驱动到410及以上版本 可在https docs n
  • python输出日志到文件_python将print输出的信息保留到日志文件中

    具体代码如下所示 import sys import os import sys import io import datetime def create detail day return 年 月 日 daytime datetime d
  • 通过白噪声的频谱处理产生任意光谱斜率(f^a)噪声(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章讲解 1 概述 文献来源 摘要 本文研究了具有任意谱
  • 前端例程20220815:拟物风格复选按钮

    演示 原理 本文要实现的按钮大致示意如下 观察者从正上方观看 写代码时主要处理光照以及近大远小等现象 代码
  • 【css】将背景图片设置到元素的右上角

    p 科学熊 将背景图片设置到body元素的右上角 p 效果 background repeat no repeat 设置背景是否重复显示 no repeat为不重复 r
  • java POI解析获取word文件内容

    1 需要的pom文件依赖
  • 微信小程序一键授权之前勾选协议

    微信小程序授权获取手机号之前勾选我已阅读并同意协议 想要实现的效果 用户点击微信一键注册按钮 如果用户没有勾选协议 就提示请勾选用户协议 如果勾选了 就直接获取微信用户的手机号密文 开始想的是直接在getPhoneNumber 方法中加一个