2018年改版之前的小程序是可以在用户首次进入小程序时通过wx.getUserInfo直接弹出一个框询问用户是否同意授权信息,或者点击某个控件触发wx.authorize(scope.userInfo)也可以弹出用户信息授权框,改版之后需要通过对button绑定点击事件对授权进行触发:
1 原来的方式
点击控件触发wx.authorize授权
tap: function () {
wx.authorize({
scope: 'scope.userInfo',
success: function () {
wx.getSetting({
success: res => {
console.log(res)
}
})
},
fail(res) {console.log(res)
wx.getSetting({
success: res => {
console.log(res)
}
})
}
})
}
wx.authorize(scope.userInfo)不能弹出,未授权的情况下wx.getUserInfo同样不会弹出
但是
对于scope中的其他值仍然可以弹出授权框,比如将上面代码中的scope改成scope.invoice
2 改版以后
需要通过button组件进行触发,并设置open-type=“getUserInfo”,以下是官方demo中的代码
<view class="userinfo">
<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>
<block wx:else>
<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
<text class="userinfo-nickname">{{userInfo.nickName}}</text>
</block>
</view>
getUserInfo: function(e) {
console.log(e)
app.globalData.userInfo = e.detail.userInfo
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
}
点击button以后弹出授权框,如果允许授权,可以从bindgetuserinfo事件中获取到用户信息
点击获取头像昵称后弹出
3 不需要授权即可使用用户信息的方式
使用open-data 可以直接展示用户的头像 昵称信息 不需要授权,这种情况用于仅需要展示头像的页面,而不是用户登录
<open-data type="groupName" open-gid="xxxxxx"></open-data>
<open-data type="userAvatarUrl" bindtap="tap"></open-data>
<open-data type="userGender" lang="zh_CN"></open-data>