小程序开发(获取用户信息和手机号)

2021-07-23  本文已影响0人  会飞的猪X

1、获取手机号

<button type="primary"  open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">微信快速登录</button>
getPhoneNumber(event) {
                let encryptedData = event.detail.encryptedData
                let iv = event.detail.iv
                 var that = this;
                    wx.checkSession({
                          success() {
                            //session_key 未过期,并且在本生命周期一直有效
                          },
                          fail() {
                            // session_key 已经失效,需要重新执行登录流程
                            wx.login({
                              success: res => {
                                code = res.code; 
                              }
                            })
                          },
                          complete() {
                            // 获取 openid
                            const appID = '';
                            const secret = '';
                            const js_code = code;
                            const grant_type = 'authorization_code';
                            var header = {
                                'Content-Type': 'application/json'
                            };
                            const params = {appId:appID,secret:secret,code:js_code,grantType:grant_type};
                            console.log(params);
// 此接口通过后端调用
                            $http.postRequest('/getUserInfo',header,params,(response)=>{
                                if (response.code == 200) {
                                    //  获取 openid.  
// WXBizDataCrypt. 微信提供的解密文件 进行解密
                                    let pc = new WXBizDataCrypt(appID,response.rows[0].session_key);
                                    let data = pc.decryptData(encryptedData, iv);
                                    // data.phoneNumber 获取手机号
                                }
                            },(res)=>{
                                
                            });
                            
                          }
                    })
            },

项目中如果出现WXBizDataCrypt解析失败的情况,解决办法如下:

// 提前调用 wx.login方法 获取code 
onLoad() {
    wx.login({
            success: res => {
          code = res.code;
         }
     }); 
    }

2、获取用户信息
此方法页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用
wx.getUserProfile

 <button bindtap="getUserProfile"> 获取用户信息 </button>
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
    // 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },

官方文档参考:
1、小程序登录流程
2、微信接口获取openid
3、解密获取openid和手机号
4、获取用户信息

上一篇下一篇

猜你喜欢

热点阅读