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;
        }
    }
    

      

  • 相关阅读:
    DAY9学习笔记
    DAY8课下作业
    DAY8学习笔记
    DAY7课下作业
    github clone 开源代码报Permission denied (publickey)
    grandle构建工程报:javax.net.ssl.SSLException
    centos安装redash
    centos安装nodejs
    CURL执行请求
    flume定制拦截器Interceptor
  • 原文地址:https://www.cnblogs.com/xin-jun/p/7274880.html
Copyright © 2011-2022 走看看