用户信息:

https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html

小程序开发获取用户微信号(wx小程序授权登录)(1)

获取用户信息wx.getUserProfile(Object object)

获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo。

Bug & Tip

  1. tip:仅小程序中 wx.getUserInfo 接口进行调整,小游戏中不受影响;
  2. tip:开发者工具中仅 2.10.4 及以上版本可访问 wx.getUserProfile 接口,在真机上可参考示例代码进行判断,无需根据版本号或者 canIUse 进行条件。
  3. tip:wx.getUserProfile 返回的加密数据中不包含 openid 和 unionId 字段。
  4. 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,都需要用户点击操作。

,