微信开放平台网站应用登录

/**
     * 获取用户信息
     * index/index/login
     */
    public function loginoauth()
    {
        $param_url = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . url('index/Index/guide');
        $param = $this->request->param();
        $jumpurl = !empty($param['url']) ? $param['url'] : $param_url;
        $state = !empty($param['state']) ? $param['state'] : md5(uniqid(rand(), true));
        $code = !empty($param['code']) ? $param['code'] : '';
        $baseurl = (is_ssl() ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . url('index/Index/loginoauth');
        //判断有无
        if (empty(session('user_id'))) {

            if (empty($code)) {
                $url = 'https://open.weixin.qq.com/connect/qrconnect?appid=' . $this->appid . '&redirect_uri=' .  urlencode($baseurl) . '&response_type=code&scope=snsapi_login&state=' . $state . '#wechat_redirect';
                header("Location:" . $url);
                exit;
            } else {
                //获取access_token
                $access_token = file_get_contents('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appid . '&secret=' . $this->appsecret . '&code=' . $code . '&grant_type=authorization_code');
                $auth = json_decode($access_token, true);
                //微信用户信息
                $userinfo = file_get_contents('https://api.weixin.qq.com/sns/userinfo?access_token=' . $auth['access_token'] . '&openid=' . $auth['openid'] . '&lang=zh_CN');
                $user_info = json_decode($userinfo, true);
                //
                $user = $this->getOne('user', ['openid' => $user_info['openid']]);
                $dataInfo = [
                    'avatar' => $user_info['headimgurl'],
                    'nickname' => $user_info['nickname'],
                    'sex' => $user_info['sex'],
                    'updatetime' => time(),
                    'logintime' => time()
                ];
                if ($user) {
                    $dataInfo['prevtime'] = $dataInfo['logintime'];
                    //存在此用户就登录
                    session('user_id', $user['id']);
                    $this->saveData('user', ['id' => $user['id']], $dataInfo);
                } else {
                    $dataInfo['openid'] = $user_info['openid'];
                    $dataInfo['createtime'] = time();
                    $dataInfo['jointime'] = time();

                    $seek = $this->addOne('user', $dataInfo);
                    session('user_id', $seek);
                }
                session('wxopenid', $user_info['openid']);
                //
                header("Location:" . $jumpurl);
                exit;
            }
        } else {
            header("Location:" . $jumpurl);
            exit;
        }
    }

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Back To Top

鄂ICP备17008157号-1