用户信息:
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html
获取用户信息wx.getUserProfile(Object object)
获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo。
Bug & Tip
- tip:仅小程序中 wx.getUserInfo 接口进行调整,小游戏中不受影响;
- tip:开发者工具中仅 2.10.4 及以上版本可访问 wx.getUserProfile 接口,在真机上可参考示例代码进行判断,无需根据版本号或者 canIUse 进行条件。
- tip:wx.getUserProfile 返回的加密数据中不包含 openid 和 unionId 字段。
- bug:开发者工具中 2.10.4~2.16.1 基础库版本通过 <button open-type="getUserInfo"> 会返回真实数据,真机上此区间会按照公告返回匿名数据。
<block wx:if="{{!hasUserInfo}}">
<button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile">
获取头像昵称 (弹窗)</button>
<button wx:else open-type="getUserInfo" bindgetuserinfo="getUserInfo">
获取头像昵称(不弹窗了) </button>
</block>
Page({
data: {
userInfo: {},
hasUserInfo: false,
canIUseGetUserProfile: false,
},
onLoad() {
if (wx.getUserProfile) {
this.setData({
canIUseGetUserProfile: true
})
}
},
getUserProfile(e) {//获取用户信息弹窗
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
// 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
},
getUserInfo(e) { //小程序进行了调整,不再弹窗确认
// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息
this.setData({
userInfo: e.detail.userInfo,
hasUserInfo: true
})
},
})
<button open-type="getPhonenumber" @getphonenumber="onGetPhoneNumber"
class="mybtn" >点击登录</button>
onGetPhoneNumber(e){
console.log(e);
if (e.detail.errMsg == "getPhoneNumber:ok") { //允许授权
uni.request({
url: getApp().globalData.url "/savePhone",
method: 'POST',
data: {
"encrypted_data":e.detail.encryptedData,
"iv":e.detail.iv,
"openid":this.openid
},
success: (res) => {
this.token=res.data.data.token
// .....
}
});
}
}
说明:getUserProfile和getPhoneNumber,都需要用户点击操作。
,