微信小程序授权登入

    public function WeChatLogin(){
        $WxData = $this->input->post();
        $arrUserData = array();
        if(isset($WxData['nickName'])&&!empty($WxData['nickName']))
            $arrUserData['nickname'] = base64_encode($WxData['nickName']);
        if(isset($WxData['avatarUrl'])&&!empty($WxData['avatarUrl']))
            $arrUserData['avatar_url'] = $WxData['avatarUrl'];
        if(isset($WxData['gender'])&&!empty($WxData['gender']))
            $arrUserData['gender'] = $WxData['gender'];
        if(isset($WxData['province'])&&!empty($WxData['province']))
            $arrUserData['province'] = $WxData['province'];
        if(isset($WxData['city'])&&!empty($WxData['city']))
            $arrUserData['city'] = $WxData['city'];
        if(isset($WxData['country'])&&!empty($WxData['country']))
            $arrUserData['country'] = $WxData['country'];
        //获取微信用户的openid
        $arrWeChat = $this->GetWxOpenid($WxData['code']);

        //判断是否获取到openid
        if(isset($arrWeChat['openid']) && $arrWeChat['openid'] !== null){
            //判断该用户是否存在
            $arrUser = $this->user->GetUserOpenid($arrWeChat['openid']);
            //不存在,插入数据库
            if(empty($arrUser)){
                $arrUserData['last_login_time'] = time();
                $arrUserData['regtime'] = time();
                $arrUserData['status'] = 0;
                $arrUserData['cid'] = 1;
                $arrUserData['openid'] = $arrWeChat['openid'];
                //插入数据库返回userid
                $bResult = $this->user->AddWeChatUser($arrUserData);
            }
            //存在,更新登入时间
            else{
                $arrUserData['last_login_time'] = time();
                $bResult = $this->user->UpdateWeChatUser($arrWeChat['openid'],$arrUserData);
            }

            $arrData['role'] = !empty($arrUser)?$arrUser[0]['role']:'1';
            $arrData['openid'] = $arrWeChat['openid'];
            //生成token,存到redis
            $arrData['sToken'] = $this->usertoken->AddTokenToRedis($arrWeChat['openid']);

            if($bResult){
                $arrHint = array('nStatus'=>0,'sMsg'=>'查询成功','arrData'=>$arrData);
            }else{
                $arrHint = array('nStatus'=>1,'sMsg'=>'查询失败');
            }

        }else{
            $arrHint = array('nStatus'=>2,'sMsg'=>'openid获取失败');
        }

        $this->output->set_content_type('application/json')->set_output(json_encode($arrHint));
    }
    public function GetWxOpenid($sCode){

        //获取微信openid接口地址:https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=".AppID."&secret=".AppSecret."&js_code=".$sCode."&grant_type=authorization_code";
        //初始化
        $curl = curl_init();
        // 使用curl_setopt()设置要获取的URL地址
        curl_setopt($curl, CURLOPT_URL, $url);
        // 设置是否输出header
        curl_setopt($curl, CURLOPT_HEADER, false);
        // 设置是否输出结果
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        // 设置是否检查服务器端的证书
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        // 使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量
        $data = curl_exec($curl);
        // 使用 curl_close() 关闭CURL会话
        curl_close($curl);
        $result = json_decode($data, true);
        return $result;
    }

猜你喜欢

转载自blog.csdn.net/zyj_15067066062/article/details/106761093