/**
* 获取用户信息
* 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;
}
}