小程序input组件type=“nickname“获取不到微信昵称的值,解决方法

WXML部分

<input bind:change="getNickname" type="nickname" placeholder="请点击选择昵称"/>

js部分

getNickname: function (e){

        console.log(e.detail.value)

    }

也是百度了半天,找的这个方法,大家试试看。

提醒:开发者工具测试有问题的,建议真机测看看。我在开发者工具测,因为input,一直会有请求两次接口的情况,真机试是没问题。如果你有更好的解决方法,欢迎留言交流。

2022年11月8日24时开始,wx.getUserProfile在开发者工具基础库2.27.1以上和最新版微信里已经获取不到用户昵称和头像了

调整公告:https://developers.weixin.qq.com/community/develop/doc/00022c683e8a80b29bed2142b56c01

腾讯整天改获取用户信息接口。

<think>好的,用户的问题是在微信小程序中,当无法正常使用getUserInfo时,如何通过按钮点击获取用户的微信昵称,并需要替代方案。我需要先理解微信小程序的用户信息获取机制的变化。 根据提供的引用内容,特别是引用[3]和[4],微信已经调整了用户信息获取的方式。之前的getUserInfo接口可能需要用户授权按钮,但现在可能需要使用新的方法,比如getUserProfile或者在表单中使用特定组件。 用户提到替代getUserInfo,所以可能需要使用getUserProfile方法。不过引用[4]中提到了通过按钮绑定事件,使用bindchooseavatar和getNickname获取头像和昵称。这可能是微信新的方式,比如通过表单输入组件获取昵称,而头像则通过按钮事件。 另外,引用[2]指出getUserInfo转变为getUserProfile,所以需要检查用户的小程序基础库版本是否支持。如果用户的基础库版本较低,可能需要兼容处理。 用户的需求是点击按钮获取昵称,所以可能需要一个带有open-type的按钮,并绑定事件处理函数。例如,使用button组件的open-type="getUserProfile",然后在success回调中获取用户信息。或者在wxml中使用<input>组件,设置type="nickname",当用户点击时弹出昵称选择。 根据引用[4],获取昵称可以通过input的blur事件,或者使用表单提交。例如,在input组件中设置name属性,然后在表单提交时获取昵称。同时,头像可能需要使用button的open-type="chooseAvatar"来触发选择头像,并在onChooseAvatar事件中获取头像URL。 需要确认当前微信的API文档,确保这些方法仍然有效。可能还需要在页面的js文件中编写相应的事件处理函数,如onGetUserProfile或getNickname,来更新页面数据。 另外,用户授权可能需要用户主动触发,所以按钮必须由用户点击,不能自动调用。因此,在wxml中设置按钮,并绑定相应的事件处理函数是关键。 最后,可能需要提示用户检查基础库版本,或者处理授权拒绝的情况,提供友好的提示信息。同时,确保在获取昵称后,更新到页面的data中,以便显示。</think>在微信小程序中,当`getUserInfo`无法正常使用时,可以通过以下两种替代方案实现按钮点击获取用户微信昵称: ### 方案一:使用`getUserProfile`接口(基础库2.10.4+) ```html <button open-type="getUserProfile" bindtap="onGetUserProfile">获取昵称</button> ``` ```javascript Page({ onGetUserProfile() { wx.getUserProfile({ desc: '用于完善会员资料', success: (res) => { const nickname = res.userInfo.nickName this.setData({ nickname }) }, fail: (err) => console.log('授权失败', err) }) } }) ``` ### 方案二:使用昵称输入组件(基础库2.21.2+) ```html <input type="nickname" class="nickname-input" placeholder="点击输入微信昵称" bindblur="getNickname" /> ``` ```javascript Page({ getNickname(e) { const nickname = e.detail.value if (nickname) { this.setData({ nickname }) } } }) ``` ### 差异对比 | 方案 | 交互方式 | 最低基础库 | 是否需要授权弹窗 | |------------|----------------|------------|------------------| | getUserProfile | 按钮触发授权弹窗 | 2.10.4 | 是 | | nickname输入框 | 直接调起昵称键盘 | 2.21.2 | 否 | ### 注意事项 1. 头像获取需使用`<button open-type="chooseAvatar">`组件[^4] 2. 需在`app.json`中声明`"requiredPrivateInfos": ["getUserProfile", "chooseAvatar"]` 3. 未通过验证的小程序可能无法使用昵称获取功能 4. 拒绝授权后应提供「重新授权」入口
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值