where(['platform'=>$params['type'], 'user_id'=>$user['id']])->delete(); } } $this->redirect(MyUrl('user/personal/index')); } /** * 跳转授权登入 * @author Guoguo * @blog http://gadmin.cojz8.com * @version 1.0.0 * @datetime 2019年3月14日 */ public function login($params = []){ $sns = ThinkOauth::getInstance($params['type']); $this->redirect($sns->getRequestCodeURL()); } /** * 授权回调地址 * @author Guoguo * @blog http://gadmin.cojz8.com * @version 1.0.0 * @datetime 2019年3月14日 */ public function callback($params = []) { if(empty($params['code']) || empty($params['type'])) { return 'ERROR-10001——参数出错!';exit; } $sns = ThinkOauth::getInstance($params['type']); $token = $sns->getAccessToken($params['code'], []); $type = $params['type']; //获取当前登录用户信息 if(is_array($token)) { $even = new LoginEvent(); $result = $even->$type($token); /*校验是否登入*/ $user = UserService::LoginUserInfo(); $user_id = empty($user['id']) ? 0 : $user['id']; //登入后返回信息 if(!empty($result)) { $oauth = [ 'user_id' => $user_id, 'platform' => $result['type'], 'openid' => $result['token']['openid'], 'openname' => $result['name'], 'access_token' => $result['token']['access_token'], 'refresh_token' => $result['token']['refresh_token'], 'expires_in' => $result['token']['expires_in'], 'createtime' => time(), 'updatetime' => time(), 'logintime' => time() ]; //判断或者写入oauth表 $where = ['openid'=>$oauth['openid']]; $oauth_user = Db::name('PluginsShopoauthOauth')->where($where)->find(); if(!empty($oauth_user)) { $up_data = [ 'access_token' => $result['token']['access_token'], 'refresh_token' => $result['token']['refresh_token'], 'expires_in' => $result['token']['expires_in'], 'updatetime' => time(), 'logintime' => time() ]; //更新表数据 //用户是否已绑定账号 if(!empty($oauth_user['user_id'])) { Db::name('PluginsShopoauthOauth')->where($where)->update($up_data); //更新用户登录缓存数据 UserService::UserLoginRecord($oauth_user['user_id']); $this->redirect('/'); } else { Db::name('PluginsShopoauthOauth')->where($where)->update($up_data); session('oauth_id', $oauth['openid']); //跳转注册页面 $this->success('登入成功,请绑定或注册账号~', MyUrl('/index/user/reginfo')); } } else { $id = Db::name('PluginsShopoauthOauth')->insertGetId($oauth); if($user_id > 0) { UserService::UserLoginRecord($user_id); $this->redirect('/'); } else { session('oauth_id', $oauth['openid']); $this->success('登入成功,请绑定或注册账号~', MyUrl('/index/user/reginfo')); } } } else { $this->error('系统出错~'); } } else { $this->error('TOKEN-ERROR-10001——参数出错!~'); } } } ?>