zoukankan      html  css  js  c++  java
  • 微信获取用户

    <?php
    /**
     * Description of WxUser
     *
     * @author xinjun
     */
    namespace ControllerWx;
    
    use ControllerHomeHomeBase;
    use ModelWxUserModel;
    use FrameworkNetRequest as R;
    use ModelConstant;
    
    class WxUser extends HomeBase
    {
        public function __construct()
        {
            parent::__construct();
        }
        
        /**
         * 获取当前用户的信息
         * @return boolean
         */
        public function getUser()
        {
            $ud = array();
            //是否是从微信公众号条跳过来的
            if (isset($_POST['openid']) && !empty($_POST['openid'])) {
                //查找用户数据库条件为openid,如果找到了,说明已经是当前的会员了直接找到取出给self::$userInfo
                $openid = $_POST['openid'];
                $userModel = new UserModel();
                $ud = $userModel->getOneByOpenid($openid);
                if (!empty($ud)) {
                    return $this->getData($ud);
                } else {
                    //没有找到为新的用户直接保存用户的信息进数据库,然后取出返回
                    $userData = $this->getUserByOpenid(self::$access_token, $openid);
                    $data = array();
                    $data['openid'] = $userData['openid'];
                    $data['nf_nickname'] = $userData['nickname'];
                    $data['nf_sex'] = $userData['sex'];
                    $data['nf_province'] = $userData['province'];
                    $data['nf_country'] = $userData['country'];
                    $data['nf_headimgurl'] = $userData['headimgurl'];
                    $result = $userModel->create($data);
                    if ($result) {
                        $ud = $userModel->getOneById($result);
                        if (!empty($ud)) {
                            return $this->getData($ud);
                        } else {
                            return $this->getError(Constant::GET_USER_ERROR);
                        }
                    } else {
                        
                        return $this->getError(Constant::GET_USER_ERROR);
                    }
                }
            } else {
                //用户是通过分享过来的
                $code = $_POST['code'];
                $userData = $this->getUserByCode(self::$appid, self::$secret, $code);
                //通过$userData获取当前用户的openid,查找用户表如果找到了用户直接给信息给self::$userInfo
                $userModel = new UserModel();
                $ud = $userModel->getOneByOpenid($userData['openid']);
                if (!empty($ud)) {
                    return $this->getData($ud);
                } else {
                    $data = array();
                    $data['openid'] = $userData['openid'];
                    $data['nf_nickname'] = $userData['nickname'];
                    $data['nf_sex'] = $userData['sex'];
                    $data['nf_province'] = $userData['province'];
                    $data['nf_country'] = $userData['country'];
                    $data['nf_headimgurl'] = $userData['headimgurl'];
                    if(!empty($data['openid'])){
                        $result = $userModel->create($data);
                        if ($result) {
                            $userModel = new UserModel();
                            $ud = $userModel->getOneByOpenid($data['openid']);
                            return $this->getData($ud);
                        } else {
                            return $this->getError(Constant::GET_USER_ERROR);
                        }
                    }else{
                        return $this->getError(Constant::GET_USER_ERROR);
                    }
                }  
            }  
        }
        /**
         * 获取当前用户的信息(分享的)
         * @return type
         */
        public function getUserByCode($appid, $secret, $code)
        {
            //通过分享过来的接收前端传的code
            $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid . "&secret=" . $secret . "&code=" . $code . "&grant_type=authorization_code";
            $https = true;
            $method = 'get';
            $data = null;
            $result = $this->request($url, $https, $method, $data);
            //获取当前用户的access_token(非基础)和用户的openid
            $data = json_decode($result, 1);
            //检查数据库是否存在openid为当前用户的数据存在
            $url = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $data['access_token'] . "&openid=" . $data['openid'] . "&lang=zh_CN ";
            $https = true;
            $method = 'get';
            $data = null;
            $userInfo = $this->request($url, $https, $method, $data);
            $userInfo = json_decode($userInfo, 1);
            return $userInfo;
        }
    
        /**
         * 获取当前用户的信息(从公众号里跳转过来的)
         * @param type $accessToken
         * @param type $openid
         * @return type
         */
        public function getUserByOpenid($accessToken, $openid)
        {
            $url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" . $accessToken . "&openid=" . $openid . "&lang=zh_CN ";
            $https = true;
            $method = 'get';
            $data = null;
            $userInfo = $this->request($url, $https, $method, $data);
            $userInfo = json_decode($userInfo, 1);
            return $userInfo;
        }
    }
    

      

  • 相关阅读:
    Rainmeter 雨滴桌面 主题分享
    行人检測之HOG特征(Histograms of Oriented Gradients)
    const和readonly差别
    ADB命令解析
    Java实现 蓝桥杯VIP 算法训练 接水问题
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
    Java实现 蓝桥杯VIP 算法训练 星际交流
  • 原文地址:https://www.cnblogs.com/xin-jun/p/7274880.html
Copyright © 2011-2022 走看看