Beispiel #1
0
 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/");
     }
 }
Beispiel #2
0
 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');
         }
     }
 }