微信小程序获取微信绑定授权手机号getPhoneNumber

继前面登录之后,有做手机号码授权。获取用户手机号码。

注意: 微信文档所示

在回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。
 

也就是在请求这个接口之前需要,先请求前面的userId接口

 //获取用户手机号码授权
    public function userMobile()
    {
        $encryptedData   =   $this->input->post('encryptedData');

        if (empty($encryptedData)){
            return $this->fail('','encryptedData不能为空');
        }
        $iv   =   $this->input->post('iv');
        if (empty($iv)){
            return $this->fail('','iv不能为空');
        }
        $uid   =   $this->input->post('uid');
        if (empty(intval($uid))){
            return $this->fail('','uid不能为空');
        }
        $appid  =  "自己的appid" ;
        //取登录时的sessionKey
        $mc = &load_cache('redis');
        $sessionKey= $mc->get('session_key');

        include_once APPPATH."/third_party/WeChat/wxBizDataCrypt.php";
        $userifo = new WXBizDataCrypt($appid, $sessionKey);

        $errCode = $userifo->decryptData($encryptedData, $iv, $data );

        if ($errCode == 0) {
            $data = json_decode($data,true);
            $userData = [
                'mobile' =>$data['phoneNumber'],
            ];

            $where['id'] = $uid;
            $result = $this->AppUserModel->update($userData,$where);
            if ($result){
                return $this->success('','手机号码已授权');
            }else{
                return $this->fail('','手机号码授权失败');
            }

        }else{
            return $this->fail($errCode,'获取用户手机号码失败');
        }

    }

 

你可能感兴趣的:(微信小程序)