微信小程序 wx.getUserProfile 接口获取用户信息

自2021年2月23日起,微信小程序wx.login接口可以直接换取unionID。4月13日后发布的新版本小程序,wx.getUserInfo和<button open-type=getUserInfo>将不再获取用户个人信息,转而提供匿名数据。开发者需使用新的getUserProfile接口获取用户授权的头像、昵称、性别和地区信息,并需用户确认。旧版小程序不受影响,但更新版本需适配新接口。

为优化用户的使用体验,平台将进行以下调整:

1、2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过 wx.login 接口获取的登录凭证可直接换取 unionID 。

2、2021年4月13日后发布的小程序新版本,无法通过 wx.getUserInfo 与 <button open-type="getUserInfo"/> 获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。

3、新增 getUserProfile 接口(基础库 2.10.4 版本开始支持),可获取用户头像、昵称、性别及地区信息,开发者每次通过该接口获取用户个人信息均需用户确认。具体接口文档:《getUserProfile接口文档》

4月13日后发布的新版本小程序,开发者调用wx.getUserInfo或<button open-type="getUserInfo"/>将不再弹出弹窗,直接返回匿名的用户个人信息,获取加密后的openID、unionID数据的能力不做调整。

具体变化如下表:

即wx.getUserInfo接口的返回参数不变,但开发者获取的userInfo为匿名信息。

调试前准备:

  1. 升级微信开发者工具 :1.05.2103022版本 开始支持
  2. 升级调试基础库:2.10.4 版本开始支持

wxml:

<view class="box">
  <button class="btn" catchtap="GetUserInfo">登录</button>
</view>

js:

// 登录
  getUserInfo() {
    let self = this
    wx.getUserProfile({
      desc: "获取你的昵称、头像、地区及性别", // 不写不弹提示框
      success: res => {
        console.log(res)
        self.setData({
          userInfo: res.userInfo
        })
      },
      fail: res => {
        //拒绝授权
        wx.showToast({
          title: '您拒绝了授权',
          icon: 'none'
        })
        return;
      }
    })
  },

 

微信小程序中,原本可以通过 `wx.getUserProfile` 接口获取用户的昵称和头像信息。然而,自 2022 年 10 月 25 日生效起,该接口的行为发生了变化:新版本的小程序调用 `wx.getUserProfile` 将无法再获得真实的用户昵称,而是统一返回 “微信用户” [^1]。 这意味着如果你是在这个日期之后发布的小程序新版本,并尝试使用 `wx.getUserProfile` 来获取用户昵称,则不会得到预期的结果。对于在生效期之前发布的版本,如果进行了更新,则也需要进行相应的适配以处理这一变化 [^1]。 此外,有开发者报告称,在升级了微信开发者工具到最新版后,尝试调用 `wx.getUserProfile` 接口时遇到了错误提示 `invoke wx.getUserProfile too frequently`,这表明频繁调用此接口可能受到限制或被阻止 [^2]。 为了解决这个问题,微信官方推荐了一种替代方案来让用户主动提供他们的昵称和头像。例如,可以引导用户通过一个表单输入他们的昵称并选择一个头像。下面是一个简单的 Vue.js 风格的代码示例,展示了如何实现这一点: ```javascript <script> export default { data() { return { // 微信默认灰色头像的图片地址(未获取用户头像前默认采用灰色头像) defaultAvatarUrl: "https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0", nickname: "" } }, methods: { onChooseAvatar(e) { // 用户选择了微信头像后触发这个函数 // 将拿到的用户微信头像地址保存到页面的data this.defaultAvatarUrl = e.detail.avatarUrl; }, getUser(e) { // 点击确认按钮后触发表单的事件,在表单事件中通过event对象获取到用户昵称 this.nickname = e.detail.value.nickname; console.log(this.nickname); } } } </script> ``` 在实际应用中,你需要根据你的前端框架或者原生 JavaScript 设置适当的方式来捕获和存储这些信息。同时,确保你遵循最新的微信小程序开发指南和政策,以便正确地处理用户数据。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值