1.获取用户权限

传送门 概念:在小程序里面有一些权限需要小程序(微信)给予。比如用户基本信息,运动步数,摄像头,通讯地址。。

有什么用?获取微信里面的一些信息,用户基本信息,运动步数。。。
除了用户信息获取之外的所有授权都可以用这种方法

  1. 发起授权
    wx.authorize(), 找到对应scope
  2. 调用授权接口
    查文档里,这个scope对应的接口方法获取授权信息

用户信息授权
3. 用户信息授权使用以下声明式的方式,不能使用js方法来获取
4. 如果授权弹窗被拒绝,再次点击也会弹( open-type 这个声明方式会弹出授权窗)
5. bindgetuserinfo对应的事件处理方法里面直接可以获到用户信息,不必使用wx.getUserInfo,当然,回调的detail数据与wx.getUserInfo返回的一致,open-type="getUserInfo"时有效
6.贴上代码:

<button open-type="getUserInfo" bindgetuserinfo="getInfo">获取用户信息</button>`

注意点:**

  1. 模拟器里面授权弹窗它在模拟器中央,但是手机上是在底部
  2. 如果授权通过了,下一次不会再弹授权窗口。但是如果你想让它再弹,需要清除授权数据
  1. 模拟器,清缓存->清除授权数据
  2. 如果是手机,找到最近使用的小程序列表,删除小程序,再预览扫码
  1. 在微信开发者工具里面,获取通讯地址,这个广州地址,是假数据
  2. 如果小程序在手机微信运行时,获取的通讯地址就是真实的,来自哪里呢?
  1. 微信->我的->头像->我的地址

案例:
获取用户信息

运动步数

通讯地址

案例代码:

<!--pages/getUserInfo/index.wxml-->
<view>
获取用户权限:
</view>
<button bindtap="getuser" open-type="getUserInfo">获取用户信息</button>
<view class="userinfo"> 
<image src="{{userdata.avatarUrl}}" class="img"></image>
<view>{{userdata.nickName}}</view>
</view>
<button bindtap="getWeRun" open-type="openSetting">运动步数</button>
<button bindtap="getAddress">获取通讯地址</button>
<view>
<view>姓名:{{userAddress.userName}}</view>
<view>电话:{{userAddress.telNumber}}</view>
<view>地址:{{userAddress.cityName}} {{userAddress.countyName}} {{userAddress.detailInfo}}</view>
</view>

js代码:

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userdata:[], //存储用户信息
    userAddress:[],//用户收货地址
  },
  // 获取用户信息
  getuser(){
    let that = this
    wx.getUserInfo({
      lang:"zh_CN",//把字符换成中文
      success: function(res) {
        var userInfo = res.userInfo
        that.setData({
          userdata:userInfo
        })
        console.log(that.data.userdata)
      }
    })
  },
  // 获取用户微信运动步数
  getWeRun(){
    // 1. 要想获取必须发起授权
    // 可以通过wx.getSetting()方法判断用户当前的授权状态,如果用户已经授权了,不会再调用窗口询问了
    // a.获取用户当前设置
    wx.getSetting({
      success: (res) => {
        // console.log(res)
        if(!res.authSetting['scope.werun']){ //b.如果当前没有授权,调用接口时弹窗询问(体验版和开发版弹框询问功能不在支持,正式版不受影响)
          console.log('用户没有授权')
          wx.authorize({
            scope: 'scope.werun',//c.发起授权
            success(res){
              console.log(res)
              console.log('用户允许被授权')
              wx.getWeRunData({//d.调用微信运动接口
                complete: (res) => {
                  console.log(res)
                },
              })
            }
          })

        }
      },
    })
   
  },

  // getWeRun(){
  //   // 2.可直接发起授权
  //   wx.authorize({
  //     scope: 'scope.werun',
  //     success(){
  //       console.log('授权被允许')
  //       //调接口拿数据
  //       wx.getWeRunData({
  //         success(res){
  //           console.log(res)
  //         }
  //       })
  //     }
  //   })
  // },

  // 获取通讯地址
  getAddress(){
    let that = this
    wx.authorize({
      scope: 'scope.address',
      success(res){
        console.log("用户同意授权");
        wx.chooseAddress({
          success (res) {
            console.log(res)
            that.setData({
              userAddress: res
            })
          }
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  },
})

用户信息接口参数打印wx.getUserInfo()

获取微信的openid java 获取微信的权限_用户信息


用户授权信息返回的数据 wx.getSetting()

获取微信的openid java 获取微信的权限_小程序_02


通讯地址 wx.chooseAddress()

获取微信的openid java 获取微信的权限_微信_03


效果

获取微信的openid java 获取微信的权限_微信_04


调用权限时弹框

获取微信的openid java 获取微信的权限_小程序_05