function oauth_callback() { session(); if ($_SESSION['oauth_serv'] == 'sina') { $conf = $this->config['oauth']['weibo']; $oauth = new WeiboOAuth($conf['appid'], $conf['skey'], $_SESSION['oauth_keys']['oauth_token'], $_SESSION['oauth_keys']['oauth_token_secret']); $_SESSION['last_key'] = $oauth->getAccessToken($_REQUEST['oauth_verifier']); $client = new WeiboClient($conf['appid'], $conf['skey'], $_SESSION['last_key']['oauth_token'], $_SESSION['last_key']['oauth_token_secret']); $userinfo = $client->verify_credentials(); if (!isset($userinfo['id'])) { var_dump($conf, $_SESSION); return "请求错误:" . var_export($userinfo, true); } $model = createModel('UserInfo'); $username = '******' . $userinfo['id']; $u = $model->get($username, 'username')->get(); //不存在,则插入数据库 if (empty($u)) { $u['username'] = $username; $u['nickname'] = $userinfo['name']; $u['avatar'] = $userinfo['profile_image_url']; list($u['province'], $u['city']) = explode(' ', $userinfo['location']); //插入到表中 $u['id'] = $model->put($u); } //写入SESSION $_SESSION['isLogin'] = 1; $_SESSION['user_id'] = $u['id']; $_SESSION['user'] = $u; $this->setLoginStat(); $this->swoole->http->edirect(WEBROOT . "/person/index/"); } elseif ($_SESSION['oauth_serv'] == 'qq') { $conf = $this->swoole->config['oauth']['qq']; $oauth = new QQOAuth($conf['APP_ID'], $conf['APP_KEY']); $oauth->getAccessToken($_GET['oauth_token'], $_SESSION['oauth_keys']['oauth_token_secret'], $_GET['oauth_vericode']); $username = $oauth->access_token['openid']; $model = createModel('UserInfo'); $u = $model->get($username, 'username')->get(); //不存在,则插入数据库 if (empty($u)) { $user = $oauth->api_get('user/get_user_info'); if (empty($user)) { return Swoole\JS::js_back("请求错误"); } $u['username'] = $username; $u['nickname'] = $user['nickname']; $u['avatar'] = $user['figureurl_2']; //插入到表中 $u['id'] = $model->put($u); } //写入SESSION $_SESSION['isLogin'] = 1; $_SESSION['user_id'] = $u['id']; $_SESSION['user'] = $u; $this->setLoginStat(); $this->swoole->http->redirect(WEBROOT . "/person/index/"); } }
function AuthCallback() { $qqwb_oauth_token_secret = $_SESSION['qqwb_oauth_token_secret'] ? $_SESSION['qqwb_oauth_token_secret'] : jsg_getcookie('qqwb_oauth_token_secret'); if (!$qqwb_oauth_token_secret || !get_param('oauth_token')) { $this->Messager('参数不完整', '?'); } require_once ROOT_PATH . 'include/ext/qqwb/qqoauth.php'; $QQAuth = new QQOAuth($this->QQWBConfig['app_key'], $this->QQWBConfig['app_secret'], get_param('oauth_token'), $qqwb_oauth_token_secret); $last_keys = $QQAuth->getAccessToken(get_param('oauth_verifier')); if (!$last_keys['oauth_token'] || !$last_keys['oauth_token_secret']) { $this->Messager('oauth_token 值为空', '?'); } $QQAuth = new QQOAuth($this->QQWBConfig['app_key'], $this->QQWBConfig['app_secret'], $last_keys['oauth_token'], $last_keys['oauth_token_secret']); $QQInfo = $QQAuth->OAuthRequest('http:/' . '/open.t.qq.com/api/user/info?format=json', 'GET', array()); unset($_SESSION['qqwb_oauth_token_secret']); jsg_setcookie('qqwb_oauth_token_secret', ''); if (!$QQInfo) { $this->Messager('连接失败', null); } if ('no auth' == $QQInfo) { $this->Messager($QQInfo, null); } $QQInfo = json_decode($QQInfo); if (!$QQInfo || !$QQInfo->data) { $this->Messager('解析失败', null); } $QQInfo = $QQInfo->data; if (!$QQInfo->name) { $this->Messager('内容错误', null); } $qqwb_bind_info = DB::fetch_first("select * from " . TABLE_PREFIX . "qqwb_bind_info where `qqwb_username`='{$QQInfo->name}'"); if ($qqwb_bind_info) { if ($last_keys['token'] != $last_keys['oauth_token'] || $last_keys['ksecret'] != $last_keys['oauth_token_secret']) { $this->DatabaseHandler->Query("update " . TABLE_PREFIX . "qqwb_bind_info set `token`='{$last_keys['oauth_token']}',`tsecret`='{$last_keys['oauth_token_secret']}' where `qqwb_username`='{$QQInfo->name}'"); } if (false != ($user_info = $this->_user_login($qqwb_bind_info['uid']))) { if (true === UCENTER && ($ucuid = (int) $user_info['ucuid']) > 0) { include_once ROOT_PATH . './api/uc_client/client.php'; $uc_syn_html = uc_user_synlogin($ucuid); $this->Messager("登录成功{$uc_syn_html}", $this->redirect_to, 5); } $this->Messager(null, $this->redirect_to); } else { $this->DatabaseHandler->Query("delete from " . TABLE_PREFIX . "qqwb_bind_info where `qqwb_username`='{$QQInfo->name}'"); $this->Messager("绑定的用户已经不存在了", $this->redirect_to); } } else { if (MEMBER_ID > 0) { $this->_bind(MEMBER_ID, $QQInfo->name, $last_keys['oauth_token'], $last_keys['oauth_token_secret']); $this->Messager(null, 'index.php?mod=account&code=qqwb'); } else { $this->third_party_regstatus(); $qqwb_username = $QQInfo->name; $token = $last_keys['oauth_token']; $tsecret = $last_keys['oauth_token_secret']; $hash = authcode(md5($qqwb_username . $token . $tsecret), 'ENCODE'); $reg = array(); $reg['nickname'] = array_iconv('utf-8', $this->Config['charset'], $QQInfo->nick); if ($this->QQWBConfig['is_sync_face'] && $QQInfo->head) { $reg['face'] = $QQInfo->head . '/180'; } $this->Title = '腾讯微博帐号绑定'; include template('bind/bind_info_qqwb'); } } }