uniapp 微信获取用户信息 方法 更新 wx.getUserProfile
<!-- 旧版本方式 --> <block v-if="canIUseProfile==false" > <button v-if="isLogin === false" type="primary" open-type="getUserInfo" @getuserinfo="getUserInfo" withCredentials="true">获取授权并登录1</button> </block> <!-- 新版本方式 --> <block v-else> <button v-if="isLogin === false" type="primary" @tap="getUserInfo" >获取授权并登录2</button> </block> ------------------------------------------------------ data 里加一个canIUseProfile初始为false ------------------------------------------------------ onLoad 里加一段判断 if( wx.getUserProfile ){ console.log('--check getUserProfile--OK'); this.canIUseProfile = true; } ------------------------------------------------------ methods 里新老都用同一个方法来处理: getUserInfo : function(e){ //旧版本方式 if( this.canIUseProfile == false ){ //获取授权信息 if(e.detail.userInfo){ console.log('用户允许了授权') console.log( e.detail.userInfo ); //1.拿到基本的微信信息!! //继续过去的老方法代码,略…… } //新版本方式 }else{ var that = this; wx.getUserProfile({ desc : '用于完善用户资料', lang : 'zh_CN', success : function( res ){ console.log( 'wx.getUserProfile=>用户允许了授权' ); console.log( res.userInfo ); // console.log( res.rawData ); console.log( res.signature ); console.log( res.encryptedData ); console.log( res.iv ); // console.log( res.cloudID ); /* 以下是网友说的,我还没来得及测试: 按新方案的意思,encryptedData,iv,rawData,signature这几个属性用不上了。 小程序端wx.getUserProfile()获取到userInfo,wx.login()获取到code, 这两个传给后端,code通过code2session接口获取到unionid,openid,session_key等; 原有的拿session_key解密encryptedData的逻辑不需要了,毕竟encryptedData也只是比userInfo多了openid和unionid。 */ } fail : function( res ){ console.log('wx.getUserProfile=>用户拒绝了授权'); console.log( res ); }, }); } }