Bootstrap

针对 微信小程序 的 getUserInfo 接口废弃,不能弹出授权窗口的问题

getUserInfo 接口废弃说明

官方给出的废弃getUserInfo接口的通知链接:小程序登录、用户信息相关接口调整说明

废弃时间:2021年4月28日以后

废弃后的使用情况:无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。

重点:数据匿名、也不再向用户发起授权请求。

getUserProfile接口 代替 getUserInfo 接口

解决方法:改用 getUserProfile接口调试

支持版本:2.10.4版本基础库开始支持(覆盖微信7.0.9以上版本)

优势:相比较getUserInfo 接口弹出的授权窗口,一点拒绝,之后再也无法弹出授权窗口。getUserProfile接口 完美修复了这个Bug

此次更新的原因:很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。

总结以下几个重点:

重点一:<button open-type="getUserInfo"/> 等同在  函数里直接调用 wx.getUserInfo的接口

重点二:2021年4月28日过后 改用 wx.getUserProfile接口 来代替 wx.getUserInfo接口

重点三:wx.getUserProfile(Object) 这里的Object 必须要有一个参数 desc 是 string类型的 用途:用来告诉用户为什么要获取用户的信息。

总结:如果你想向用户发起一个授权获取信息的请求,就不能使用 <button open-type="getUserInfo"/> 或者 wx.getUserInfo接口。 不想数据被匿名,也是同上。

改造示例:

使用uni-app开发的方法 来使用  button按钮标签与 uni.getUserProfile 接口的案例

<!-- 标签部分 -->

<!-- 登录按钮 -->
<button type="primary" class="btn-login" @click="getUserInfo">一键登录</button>




// js 部分
getUserInfo(){
    uni.getUserProfile({
        // desc 属性是必须要添加的属性  string类型  用途:是告知用户为什么需要获取用户信息
        desc: '获取用户信息',
        success(info){
            // 这里获取的信息等同于 以前的getUserInfo返回的信息
            console.log(info)
        }
    })
}

getUserProfile 接口的使用方法:

wx的文档: wx.getUserProfile(Object object) 的 微信文档说明 链接

uni-app的文档: uni.login(OBJECT) uni-app上使用的说明文档 链接

;