1.获取用户权限
传送门 概念:在小程序里面有一些权限需要小程序(微信)给予。比如用户基本信息,运动步数,摄像头,通讯地址。。
有什么用?获取微信里面的一些信息,用户基本信息,运动步数。。。
除了用户信息获取之外的所有授权都可以用这种方法
- 发起授权
wx.authorize(), 找到对应scope - 调用授权接口
查文档里,这个scope对应的接口方法获取授权信息
用户信息授权
3. 用户信息授权使用以下声明式的方式,不能使用js方法来获取
4. 如果授权弹窗被拒绝,再次点击也会弹( open-type 这个声明方式会弹出授权窗)
5. bindgetuserinfo对应的事件处理方法里面直接可以获到用户信息,不必使用wx.getUserInfo,当然,回调的detail数据与wx.getUserInfo返回的一致,open-type="getUserInfo"时有效
6.贴上代码:
<button open-type="getUserInfo" bindgetuserinfo="getInfo">获取用户信息</button>`
注意点:**
- 模拟器里面授权弹窗它在模拟器中央,但是手机上是在底部
- 如果授权通过了,下一次不会再弹授权窗口。但是如果你想让它再弹,需要清除授权数据
- 模拟器,清缓存->清除授权数据
- 如果是手机,找到最近使用的小程序列表,删除小程序,再预览扫码
- 在微信开发者工具里面,获取通讯地址,这个广州地址,是假数据
- 如果小程序在手机微信运行时,获取的通讯地址就是真实的,来自哪里呢?
- 微信->我的->头像->我的地址
案例:
获取用户信息
运动步数
通讯地址
案例代码:
<!--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()
用户授权信息返回的数据 wx.getSetting()
通讯地址 wx.chooseAddress()
效果
调用权限时弹框