本文是对另一篇文档 https://blog.csdn.net/duke_ding2/article/details/130674320
的补充。
环境
- 微信开发者工具 Stable 1.06.2306020
- 调试基础库 2.32.2
背景
在较低版本(2.27.0及以下)的基础库中,在小程序里可以使用 wx.getUserProfile()
API接口来获取微信用户信息。
返回的用户信息包括头像、昵称等。
在2.27.1及以上的基础库中,该接口已经被收回了。该API在调用时,不会弹出用户授权窗口,而是会直接返回默认的昵称“微信用户”和默认头像。
在官方的 小程序用户头像昵称获取规则调整公告 中,解释如下:
……
但实践中发现有部分小程序,在用户刚打开小程序时就要求收集用户的微信昵称头像,或者在支付前等不合理路径上要求授权。如果用户拒绝授权,则无法使用小程序或相关功能。在已经获取用户的 openId 与 unionId 信息情况下,用户的微信昵称与头像并不是用户使用小程序的必要条件。为减少此类不合理的强迫授权情况,作出如下调整。
……
总而言之,就是不要再使用这个接口了,要想获取头像昵称,请参考 头像昵称填写能力 。
获取头像昵称
准备
新建小程序 miniprogram-15
,不使用云服务,选择JavaScript基础模板。
新建页面 myPage1
。在 app.js
中,把 myPage1
调整到最前面。
点击右上角 “详情” -> “本地设置” ,将“调试基础库” 设置为 2.32.2
。
获取头像
代码
只需将按钮的 open-type
设置为 "chooseAvatar"
,即可通过 bindchooseavatar
事件获取头像的临时路径。
myPage1.wxml
:
<button open-type="chooseAvatar" bindchooseavatar="onChooseAvatar">
<image src="{{avatarUrl}}" style="width: 132rpx; height: 132rpx;"></image>
</button>
myPage1.js
:
......
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
......
data: {
avatarUrl: defaultAvatarUrl,
},
......
onChooseAvatar(e) {
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
},
......
效果
点击按钮,效果如下:
选择“用微信头像”:
获取昵称
代码
只需将input的type设置为 "nickname"
。
<input type="nickname" placeholder="请输入昵称"/>
效果
当input获得焦点时,页面下方就会提示使用微信昵称:
点击之,微信昵称就会填充到input里。
其它
本例中为了简化,省略了CSS美化。在微信官网中,有一个完整的示例: https://developers.weixin.qq.com/s/AHlLS9mn7Izb
参考
https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/userProfile.html