微信小程序-最新获取用户基本信息方案

摘要:
如果只显示用户信息,最简单的解决方案是使用文档中的组件:如果需要通过接口将用户信息传输到后台,您需要强制授权:小程序当前被限制通过测试版和试用版中的wx。GetUserInfo({})将获得弹出的授权框。IsShowAhturoizeWarning}}“˃警告授权被拒绝后,将不会通知您。。。。。

如果只是单纯的展示用户信息,那么最简单的方案就是

文档中组件:

微信小程序-最新获取用户基本信息方案第1张

<open-data type="groupName" open-gid="xxxxxx"></open-data>
<open-data type="userAvatarUrl"></open-data>
<open-data type="userGender" lang="zh_CN"></open-data>

 如果是需要将用户信息通过接口传递到后台,那么需要强制授权:

小程序目前在测试版和体验版限制通过wx.getUserInfo({})获取弹出授权框。

支持通过按钮点击获取授权的方式:

//注意:wx.authorize({scope: "scope.userInfo"}),无法弹出授权窗口
<button open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>

小程序目前不支持,打开时就弹出授权窗,只能使用按钮触发,按钮触发授权方案:

//此处时拒绝授权的警告窗口,如果用户点击拒绝,则会弹出这个窗口,确定按钮再次绑定授权弹窗事件。
<view class="authorize-warning" hidden="{{!isShowAhturoizeWarning}}">
    <view class="box">
      <view class="title">警告</view>
      <view class="content">拒绝授权后,将无法通知您。。。。。点击“取消”拒绝提醒,点击“确定”再次尝试授权?</view>
      <view class="footer">
        <button bindtap="cancelAuthroize">取消</button>
        <button open-type="getUserInfo" bindgetuserinfo="getAuthorize">确定</button>
      </view>
    </view>
  </view> 
 getUserInfo(){//同意授权,获取用户信息,encryptedData是加密字符串,里面包含unionid和openid信息
    wx.getUserInfo({
      withCredentials: true,//此处设为true,才会返回encryptedData等敏感信息
      success: res => {
        // 可以将 res 发送给后台解码出 unionId
        app.globalData.userInfo = res.userInfo;
        app.globalData.encryptedData = res.encryptedData;
        app.globalData.iv = res.iv;
        this.saveUserInfo();
        console.log(res)
      }
    })
  },
getAuthorize(){//弹出授权窗函数
    if(this.data.acceptAuthorize) {//判断是否已经授权过
      // 获取用户信息
      wx.getSetting({
        success: res => {
          if (res.authSetting['scope.userInfo']) {
            // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
            this.getUserInfo();
            this.setData({
              isShowAhturoizeWarning: false
            })
          } else {
            this.setData({
              isShowAhturoizeWarning:true
            })
          }
        }
      })
    } else {//如果已经授权过直接登录
      this.saveUserInfo()
    },
  cancelAuthroize(){
    this.setData({
      isShowAhturoizeWarning: false,
      acceptAuthorize:false
    });
    app.globalData.unionid=null;
    this.saveUserInfo();
    
  }

免责声明:文章转载自《微信小程序-最新获取用户基本信息方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇React高阶组件中使用React.forwardRef的技巧Linux下的/etc/crontab文件和crontab -e命令区别及Crontab命令详解(转)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

需求规格说明书格式及要求

1 引言 1.1 编写目的 1.2 项目风险 具体说明本软件开发项目的全部风险承担者,以及各自在本阶段所需要承担的主要风险,首要风险承担着包括 a) 任务提出者 b) 软件开发者 c) 产品使用者 1.3 文档约定 描述编写文档时所采用的标准,或各种排版约定.排版约定应该包括: a) 正文风格 b) 提示方式 c) 重要符号 也应该说明高层次需求是否可以被...

Docker从入门到放弃

  为什么要学习 docker 呢?深有体会,由于一些原因只能在他人电脑上搭建环境,明明在自己电脑上的程序跑的好好的,在他人的电脑上就是死活出错。折磨人呀!!!!!可是能怎么办,工作还得继续,曲线救国呗,折腾了一天终于搞好了,那么以后呢?想到了之前搭建靶机时候用到的docker,时间长了也忘了,准备好好梳理学习入门一波。《十分感谢大神的文章,本文基于大神的...

2020软件工程作业——团队04

软件需求说明书 for OMCP 2020软件工程作业——团队04 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineer...

adb

ADB(Android Debug Bridge) ANR(Application No Responding) adb其实就是Android Debug Bridge, Android 调试桥的缩写,adb 是一个C/S架构的命令行工具 这里介绍一些里面常用的命令: adb devices , 获取设备列表及设备状态 [xuxu:~]$ adb de...

【开发工具】OpenLive使用总结

一、OpenLive软件安装 ①下载地址 http://openlivewriter.org/ ②安装 (基本上下一步就行) 二、使用SyntaxHighlighter实现代码高亮 ①下载插件 https://files-cdn.cnblogs.com/files/memento/Memento.OLW_V1.0.0.0.7z ②将解压后的两个dll...

App性能测试之耗电量

手机app的主要耗电场景有: (1)cpu:复杂的运算逻辑、死循环等会直接导致CPU负载过高,会导致耗电;(2)wakelock:只要有应用拿到wakelock这个锁,系统就无法进入睡眠状态。频繁wakelock或者申请了wakelock没有释放,会导致耗电;(3)wifiscan和wifilock:wifiscan和wifilock也会导致手机的wif...