예제 #1
0
 public function callback()
 {
     es_session::start();
     require_once APP_ROOT_PATH . "system/api_login/qqv2/qqConnectAPI.php";
     $qc = new QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $use_info_keysArr = array("access_token" => $access_token, "openid" => $openid, "oauth_consumer_key" => $this->api['config']['app_key']);
     $use_info_url = "https://graph.qq.com/user/get_user_info";
     $graph_use_info_url = $qc->urlUtils->combineURL($use_info_url, $use_info_keysArr);
     $response = $qc->urlUtils->get_contents($graph_use_info_url);
     $arr = array();
     $arr = json_decode($response, true);
     $msg['field'] = 'qq_id';
     $msg['id'] = $openid;
     $msg['name'] = $arr["nickname"];
     es_session::set("api_user_info", $msg);
     $user_data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where qq_id = '" . $openid . "' and qq_id <> '' and is_effect=1 and is_delete=0");
     if ($user_data) {
         $user_current_group = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_group where id = " . intval($user_data['group_id']));
         $user_group = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user_group where score <=" . intval($user_data['score']) . " order by score desc");
         if ($user_current_group['score'] < $user_group['score']) {
             $user_data['group_id'] = intval($user_group['id']);
         }
         es_session::set("user_info", $user_data);
         $GLOBALS['db']->query("update " . DB_PREFIX . "user set login_ip = '" . get_client_ip() . "',login_time= " . TIME_UTC . ",group_id=" . intval($user_data['group_id']) . " where id =" . $user_data['id']);
         es_session::delete("api_user_info");
         app_recirect_preview();
     } else {
         $this->create_user();
         app_redirect(APP_ROOT . "/");
     }
 }
 public function callback()
 {
     vendor('QQApi.qqConnectAPI');
     $qc = new \QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $data['data'] = serialize(array('access_token' => $access_token, 'openid' => $openid));
     M('post_log')->add($data);
     //注册会员信息
     //查看此openid是否存在
     $map['username'] = $openid;
     $detail = D('User')->where($map)->find();
     $userid = $detail['userid'];
     $nickname = $detail['nickname'];
     if (!$detail) {
         //获取用户信息
         $arr = $qc->get_user_info();
         M('post_log')->add(array('data' => serialize($arr)));
         $info['username'] = $openid;
         $info['nickname'] = $nickname = $arr['nickname'];
         $userid = D('User')->add($info);
     }
     if ($userid) {
         //保存session
         session('userid', $userid);
         //保存cookie用户信息
         cookie('userid', $userid);
         cookie('nickname', $nickname);
         cookie('userid', $userid);
         redirect(U('Shenma/user'));
     }
     /* $arr = $qc->get_user_info();
     		
     		var_dump($arr);exit; */
 }
예제 #3
0
 /**
  * 返回登录
  */
 public function callback()
 {
     require_once COMMON_LIB_PATH . "QqConnect/API/qqConnectAPI.php";
     $qc = new QC();
     $callback = $qc->qq_callback();
     $openid = $qc->get_openid();
     $user = K("user")->field("uid,username,password,qqau,userlock,uuid,usergroup")->where(array("qqau" => $openid))->find();
     session("qqau", $openid);
     if (empty($user["qqau"])) {
         //首次登录或没有绑定账号
         $qc = new QC($callback, $openid);
         $arr = $qc->get_user_info();
         session("UserInfo", $arr["nickname"]);
         go("Passport/Qqlogin/index");
     } elseif ($user["qqau"] == $openid) {
         //数据库比对正确
         if ($user["userlock"] == 1) {
             $this->error("您已经被锁定,请联系管理员!");
         }
         //$this->eve_exp($user["uid"]);
         $loginData = array("logintime" => time(), "loginip" => ip::getClientIp(), "qqau" => $openid);
         M("user")->where(array("uid" => $user["uid"]))->save($loginData);
         // p($_POST);
         session("username", $user["username"]);
         session("uid", $user["uid"]);
         session("uuid", $user["uuid"]);
         session("usergroup", $user["usergroup"]);
         $this->success("登录成功!正在跳转...", U(__WEB__));
     }
 }
예제 #4
0
파일: Qq.php 프로젝트: pbchen/thirdLoginAPI
 public function callbackAction()
 {
     $mediaqqmodel = new Media_QQModel($this->_basemodel, $this->_qqparam);
     $app_id = isset($_REQUEST['app_id']) ? trim($_REQUEST['app_id']) : '69948denMVMoBujYGLSFGUHbkvP7E3';
     $mediaqq = $mediaqqmodel->getApp($app_id);
     $APPID = $mediaqq['APPID'] && $mediaqq['APPKEY'] ? $mediaqq['APPID'] : $mediaqq['def_APPID'];
     $APPKEY = $mediaqq['APPID'] && $mediaqq['APPKEY'] ? $mediaqq['APPKEY'] : $mediaqq['def_APPKEY'];
     $redirect_uri = $this->_qqparam['redirect_uri'] . '?app_id=' . $mediaqq['app_id'];
     $state = md5($mediaqq['app_key']);
     $qcinit = new QQAPI_YafQQConnetAPI();
     $qc = new QC();
     $access_token = $qc->qq_callback($APPID, $redirect_uri, $APPKEY);
     echo $access_token . '----------';
     $openid = $qc->get_openid($access_token);
     echo $openid . '---------';
     $qqUser = $qc->my_get_userinfo($access_token, $openid, $APPID);
     if ($qqUser && $qqUser->nickname) {
         $media_user_id = $mediaqqmodel->saveUser($openid, $qqUser, $APPID);
         if ($media_user_id) {
             $usertokentime = date('Y-m-d H:i:s', time() + Yaf_Application::app()->getConfig()->application->usertokentime);
             $login_token = $mediaqqmodel->saveAccessToken($app_id, $access_token, $openid, $media_user_id, $usertokentime);
             if ($login_token) {
                 $url = $mediaqq['token_url'];
                 $concat = '&';
                 if (strpos($url, '?') === false) {
                     $concat = '?';
                 }
                 $url .= $concat . "token={$login_token}";
                 header("Location:{$url}");
             }
         }
     }
     exit;
 }
예제 #5
0
 public function callback()
 {
     require 'QQ/API/qqConnectAPI.php';
     //引进qqapi 接口
     $qc = new \QC();
     $acs = $qc->qq_callback();
     //获取access-token 和openid
     $oid = $qc->get_openid();
     $qc = new \QC($acs, $oid);
     $uinfo = $qc->get_user_info();
     //获取用户信息
     $user = M('user');
     $list = $user->where("openid='" . $oid . "'  and status = 1")->find();
     if ($list) {
         session('userid', $list['id']);
         session('username', $list['nickname']);
         session('userphone', $list['mobile']);
         session('userimg', $list['headpic']);
         //var_dump($list);die();
         echo "<script>window.close();window.opener.location.reload()</script>";
         exit;
         //$this->redirect('Index/index', '', 0, '页面跳转中...');
     } else {
         session('openid', $oid);
         session('uinfo', $uinfo);
         session('sign', array('name' => 'QQ账号', 'code' => 1));
         echo "<script>window.close();window.opener.location.href='" . U('User/threepartlogin') . "'</script>";
         exit;
     }
 }
예제 #6
0
 public function qqcallback()
 {
     Vendor('Oauth.QC#class');
     $qc = new \QC();
     $token = $qc->qq_callback();
     $openid = $qc->get_openid();
     if (!$token || !$openid) {
         $this->error('操作失败');
     }
     // 重新实例化 QC类
     $qc = new \QC($token, $openid);
     $uinfo = $qc->get_user_info();
     $this->user_model = D('user');
     $user = $this->user_model->field('id,email,password')->where(array('qq_token' => $token, 'qq_openid' => $openid))->find();
     // echo $this->user_model->getLastSql();
     if ($user['id'] > 0) {
         // 登录用户
         if ($this->user_model->login($user['id'], $user['email'], $user['password'])) {
             //TODO:跳转到登录前页面
             $this->success('登录成功!', session('rebackurl'));
         } else {
             $this->error($model->getError());
         }
     } else {
         session('avatar', $uinfo['figureurl_qq_2']);
         session('openid', $openid);
         session('token', $token);
         session('uname', $uinfo['nickname']);
         session('oatype', 'qq_');
         //print_r($uinfo);
         $this->redirect('join');
     }
 }
예제 #7
0
 public function qqcallback()
 {
     require_once "./QQ/API/qqConnectAPI.php";
     $qc = new \QC();
     echo $qc->qq_callback();
     echo $qc->get_openid();
     var_dump($qc);
 }
예제 #8
0
파일: qq.php 프로젝트: yongge666/sunupedu
 public function getAccessToken($parms)
 {
     require_once dirname(__FILE__) . "/API/qqConnectAPI.php";
     $qc = new QC();
     $access_token = $qc->qq_callback($this->apiId, parent::getReturnUrl(), $this->apiKey);
     $openid = $qc->get_openid();
     ISession::set('openid', $openid);
     ISession::set('access_token', $access_token);
 }
예제 #9
0
 public function qq_callback()
 {
     require_once "./public/Library/qqAuth/qqConnectAPI.php";
     $qc = new QC();
     //echo $qc->qq_callback();
     $openid = $qc->get_openid();
     $arr = $qc->get_user_info();
     $nickname = $arr["nickname"];
     //TODO 注册登录操作
 }
예제 #10
0
 /**
  * QQ回调地址 
  *
  */
 public function actionQq_callback()
 {
     require_once Yii::getPathOfAlias('ext') . "/OAuth/qq/qqConnectAPI.php";
     $qc = new QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $qc = new QC($access_token, $openid);
     $user_info = $qc->get_user_info();
     //查看是否已绑定
     $bind = OAuthQQ::model()->findByPk($openid);
     //数据
     $data = array('type' => 'qq', 'access_token' => $access_token, 'openid' => $openid, 'uid' => $bind ? $bind->uid : 0, 'username' => $user_info['nickname'], 'avatar' => $user_info['figureurl_2']);
     //绑定注册
     $this->bind_register($bind, $data);
 }
예제 #11
0
function QQ_callback()
{
    $cb_arr = array();
    $qc = new QC();
    $access_token = $qc->qq_callback();
    //DE89B12F418C136D96F62898CBC4705E
    $openid = $qc->get_openid();
    //B8C02925F80EE3B4462B86E7868DAC1D
    //echo $access_token;
    //echo $openid;
    $qc1 = new QC($access_token, $openid);
    $userinfo_arr = $qc1->get_user_info();
    $nickname = $userinfo_arr["nickname"];
    $cb_arr = array('access_token' => $access_token, 'openid' => $openid, 'nick' => $nickname);
    return $cb_arr;
}
예제 #12
0
 public function callback()
 {
     define('QQ_LOGIN_APPID', $this->config->get('qq_login_appid'));
     define('QQ_LOGIN_APPKEY', $this->config->get('qq_login_appkey'));
     define('QQ_CALLBACK_URI', HTTP_SERVER . 'catalog/controller/api/qq_callback.php');
     require_once DIR_SYSTEM . 'library/qq/qqConnectAPI.php';
     $qc = new QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $qui = new QC($access_token, $openid);
     $user_info = $qui->get_user_info();
     $this->session->data['qq_nickname'] = $user_info['nickname'];
     $this->load->language('extension/module/qq_login');
     $data['text_qq_login'] = $this->language->get('text_qq_login');
     if (stristr($openid, 'error')) {
         echo $this->language->get('error_openid');
     } elseif ($openid) {
         $this->session->data['qq_openid'] = $openid;
         if ($this->customer->login_qq($this->session->data['qq_openid'])) {
             unset($this->session->data['guest']);
             // Default Addresses
             $this->load->model('account/address');
             if ($this->config->get('config_tax_customer') == 'payment') {
                 $this->session->data['payment_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
             }
             if ($this->config->get('config_tax_customer') == 'shipping') {
                 $this->session->data['shipping_address'] = $this->model_account_address->getAddress($this->customer->getAddressId());
             }
             $this->response->redirect($this->url->link('account/account', '', 'SSL'));
         } else {
             $this->session->data['qq_login_warning'] = sprintf($this->language->get('text_qq_login_warning'), $this->config->get('config_name'));
             $this->response->redirect($this->url->link('account/login', '', 'SSL'));
         }
     } else {
         echo $this->language->get('text_qq_fail');
     }
 }
예제 #13
0
 public function qq_sucsess()
 {
     session_start();
     define('M_ROOT', dirname(dirname(__FILE__)));
     $ss = M_ROOT;
     $str = str_replace("\\", "/", $ss);
     include_once $str . "/API/qq/qqConnectAPI.php";
     $qc = new \QC();
     $atid = $qc->qq_callback();
     $opid = $qc->get_openid();
     $opid = (string) $opid;
     $state = I('state');
     $_SESSION['state'] = $state;
     $qc = new \QC($atid, $opid);
     // 重新带参地new一次否则会丢失信息
     $user_model = D('yuser');
     $find = $user_model->field('uid,username,nickname,figureurl,userpic')->where(' openid=' . '"' . $opid . '"')->find();
     if (empty($find)) {
         $info = $qc->__call('get_user_info');
     }
     if (!empty($info)) {
         $data = array('username' => $info['nickname'], 'nickname' => $info['nickname'], 'sex' => $info['gender'], 'province' => $info['province'], 'city' => $info['city'], 'year' => $info['year'], 'figureurl' => $info['figureurl_qq_2'], 'openid' => $opid, 'tokenid' => $atid, 'addtime' => date('Y-m-d H:i:s'), 'loginip' => get_client_ip(), 'status' => 1);
         if ($id = $user_model->add($data)) {
             $user = $user_model->field('uid,username,figureurl,userpic')->where('uid=' . $id)->find();
             $picName = $find['userpic'];
             $picInfo = pathinfo($picName);
             $find['userpic'] = $picInfo['filename'] . '70.' . $picInfo['extension'];
             $_SESSION['user'] = $user;
             $this->redirect('/Index', '登录成功,正在跳转到首页', 0);
         }
     } else {
         $picName = $find['userpic'];
         $picInfo = pathinfo($picName);
         $find['userpic'] = $picInfo['filename'] . '70.' . $picInfo['extension'];
         $qiandao = $user_model->getQiandao($find['uid']);
         $find['qiandao'] = $qiandao;
         $data = array('lastlogin' => date('Y-m-d H:i:s', time()), 'uid' => session('user.uid'));
         $user_model->save($data);
         $_SESSION['user'] = $find;
         $this->redirect('/Index', '登录成功,正在跳转到首页', 0);
     }
 }
예제 #14
0
파일: callback.php 프로젝트: kwdwkiss/trial
<?php 
session_start();
function randusname($name)
{
    $nickname = $name . '_' . rand(1000, 9999);
    return $nickname;
}
require_once "../../../include/conn.php";
require_once "../../../include/myfunction.php";
require_once "../API/qqConnectAPI.php";
require_once "../../../config.inc.php";
require_once "../../../uc_client/client.php";
$siteweb = GetSiteconfig();
$qc = new QC();
$qqcallback = $qc->qq_callback();
$qqid = $qc->get_openid();
$qc = new QC($qqcallback, $qqid);
$arr = $qc->get_user_info();
if (!empty($qqcallback)) {
    $sql = "select * from user where qq_ua='{$qqid}'";
    $result = mysql_query($sql);
    $count = mysql_num_rows($result);
    $usxx = mysql_fetch_assoc($result);
    if (!empty($_SESSION['usnamese']) && !empty($usxx['qq_ua'])) {
        echo "<script>location='/u'</script>";
        exit;
    }
    if ($count) {
        if (time() > $usxx['Pingbi']) {
            $_SESSION['usnamese'] = $usxx['name'];
            $_SESSION['usidse'] = $usxx['id'];
예제 #15
0
 public function index()
 {
     //phpinfo();
     //点击QQ登录
     if (isset($_REQUEST['qq'])) {
         require_once "./Public/QQLogin/qqConnectAPI.php";
         $qc = new QC();
         $qc->qq_login();
         die;
     }
     //QQ登录后返回处理
     if (isset($_REQUEST['code'])) {
         require_once "./Public/QQLogin/qqConnectAPI.php";
         $qc = new QC();
         $acs = $qc->qq_callback();
         $oid = $qc->get_openid();
         $qq_open_id = $qc->get_openid();
         echo $acs . "|" . $oid;
         $qc = new QC($acs, $oid);
         $qq_user = $qc->get_user_info();
         //p($qq_user);die;
         $username = $qq_user['nickname'];
         $sex = $qq_user['gender'] == '男' ? 1 : 0;
         $face = $qq_user['figureurl_2'];
         //头像处理
         /*获取网络图片太忙,展示考虑
             	$qq_face=$qq_user['figureurl_2'];
             	$face=date("Y_m")."/".time().".jpg";
             	$path="./Uploads/face/".date("Y_m");
             	$file="./Uploads/face/".$face;
             	//p($file);die;
             	if(!file_exists($path)){  //检测变量中的文件夹是否存在,如果存在,删除
         			mkdir($path,0777); //创建文件夹
         		}
             	
             	$qq_face=file_get_contents($qq_face);
             	file_put_contents($file, $qq_face);*/
         $user = M('user')->where(array('qq_open_id' => $qq_open_id))->find();
         if (!$user) {
             //第一次登录,保存用户信息
             $data = array('qq_open_id' => $qq_open_id, 'username' => $username, 'sex' => $sex, 'face' => $face, 'description' => $this->_post('description'), 'register_time' => time());
             //p($data);die;
             $user_id = M('user')->add($data);
             if ($user_id) {
                 session('user_id', $user_id);
                 session('username', $username);
                 redirect(U('Index/index'));
                 die;
             } else {
                 redirect(U('Index/index'));
                 die;
             }
         } else {
             //以前登录过
             if ($user['lock'] > time()) {
                 $this->error('您已被锁定,请过段时间在试。。。');
                 die;
             }
             session('user_id', $user['user_id']);
             session('username', $user['username']);
             redirect(U('Index/index'));
         }
         die;
     }
     if (isset($_SESSION['user_id'])) {
         redirect(U('Index/index'));
         die;
     }
     if (!$this->isPost()) {
         $this->display();
         die;
     }
     $username = $this->_post('username');
     $password = $this->_post('password', 'md5');
     $where = array('username' => $username);
     $user = M('user')->where($where)->find();
     p($username);
     p($password);
     //p($user);die;
     if ($user['lock'] == 1) {
         $this->error("您已被锁定,请过段时间在试。。。");
     }
     if (!$user || $user['password'] != $password) {
         $this->error("用户名或者密码错误!~_~");
     }
     session('user_id', $user['user_id']);
     session('username', $user['username']);
     redirect(__APP__);
 }
예제 #16
0
파일: Qqv2_api.php 프로젝트: macall/jsd
 public function callback()
 {
     global_run();
     require_once APP_ROOT_PATH . "system/api_login/qqv2/qqConnectAPI.php";
     $qc = new QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $use_info_keysArr = array("access_token" => $access_token, "openid" => $openid, "oauth_consumer_key" => $this->api['config']['app_key']);
     $use_info_url = "https://graph.qq.com/user/get_user_info";
     $graph_use_info_url = $qc->urlUtils->combineURL($use_info_url, $use_info_keysArr);
     $response = $qc->urlUtils->get_contents($graph_use_info_url);
     if ($response['ret'] != 0) {
         showErr("授权失败,错误信息:" . $response['msg']);
         die;
     }
     $response = json_decode($response, 1);
     $msg['field'] = 'qqv2_id';
     $msg['id'] = $openid;
     $msg['name'] = $response["nickname"];
     es_session::set("api_user_info", $msg);
     $user_data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where qqv2_id = '" . $openid . "' and qqv2_id <> '' and is_effect=1 and is_delete=0");
     $is_bind = intval(es_session::get("is_bind"));
     if ($user_data) {
         $GLOBALS['db']->query("update " . DB_PREFIX . "user set qq_token = '" . $access_token . "',login_ip = '" . CLIENT_IP . "',login_time= " . NOW_TIME . " where id =" . $user_data['id']);
         es_session::delete("api_user_info");
         if ($is_bind) {
             if (intval($user_data['id']) != intval($GLOBALS['user_info']['id'])) {
                 showErr("该帐号已经被别的会员绑定过,请直接用帐号登录", 0, url("index", "uc_account"));
             } else {
                 require_once APP_ROOT_PATH . "system/model/user.php";
                 load_user($user_data['id'], true);
                 es_session::set("user_info", $user_data);
                 app_redirect(url("index", "uc_account"));
             }
         } else {
             require_once APP_ROOT_PATH . "system/model/user.php";
             auto_do_login_user($user_data['user_name'], $user_data['user_pwd'], $from_cookie = false);
             app_redirect(url("index", "index"));
         }
     } elseif ($is_bind == 1 && $GLOBALS['user_info']) {
         //当有用户身份且要求绑定时
         $GLOBALS['db']->query("update " . DB_PREFIX . "user set qqv2_id= '" . $msg['id'] . "', qq_token ='" . $access_token . "' where id =" . $GLOBALS['user_info']['id']);
         require_once APP_ROOT_PATH . "system/model/user.php";
         load_user($GLOBALS['user_info']['id'], true);
         app_redirect(url("index", "uc_account"));
     } else {
         $user_info = $this->create_user();
         require_once APP_ROOT_PATH . "system/model/user.php";
         auto_do_login_user($user_info['user_name'], $user_info['user_pwd'], $from_cookie = false);
         app_redirect(url("index", "index"));
     }
 }
예제 #17
0
파일: callback.php 프로젝트: blackzw/auth
<?php

session_start();
include_once '../../config.php';
$site = get_site(__DIR__);
define('SITE_PATH', $site);
include_once CONFIG_PATH . '/' . $site . PHP_EXT;
include_once QQ_PATH . '/qqConnectAPI.php';
$Mac_ID = $_SESSION['Mac_ID'];
$qc = new QC();
$acs = $qc->qq_callback();
$oid = $qc->get_openid();
$qc = new QC($acs, $oid);
$user = $qc->get_user_info();
$idol = array('name' => QQ_ADD_IDOL_BY_NAME);
$content = array('content' => QQ_SEND_WEIBO_MESSAGE);
$idol_ret = $qc->add_idol($idol);
$content_ret = $qc->add_t($content);
UniFi::set_site($site);
UniFi::sendAuthorization($Mac_ID, WIFI_EXPIRED_TIME);
sleep(5);
header('Location: ' . DEFAULT_URL);
예제 #18
0
파일: passport.php 프로젝트: beyondye/ENPHP
 /**
  * qq登陆回调
  * @return void
  */
 public function qqCallback()
 {
     require_once APP_DIR . "vendors/auth/qq/API/qqConnectAPI.php";
     $qc = new \QC();
     $token = $qc->qq_callback();
     $openid = $qc->get_openid();
     if (!$openid || !$token) {
         return;
     }
     //授权之后的操作,默认是登录
     $auth_action = $this->input->cookie('auth_action');
     if ($auth_action) {
         //清楚此临时cookie
         $this->output->cookie(['auth_action' => ''], 0);
     } else {
         $auth_action = 'login';
     }
     //得到第三方账户对应的数据库账户
     $account = $this->related_account->one($openid);
     if ($auth_action == 'login') {
         if ($account) {
             // 在登录前转移数据
             $this->transferData($account->uid);
             $this->model('passport')->login($account->uid, 'password');
             $this->output->view('passport/qq', ['uid' => $account->uid]);
         } else {
             $qc = new \QC($token, $openid);
             $userinfo = $qc->get_user_info();
             //判断nickname是否存在
             if ($this->user->isNicknameExist($userinfo['nickname'])) {
                 $userinfo['nickname'] = $userinfo['nickname'] . '_' . substr(md5(time()), 0, 2);
             }
             $data = ['with_openid' => 1, 'nickname' => $userinfo['nickname'], 'created' => time(), 'modified' => time(), 'login_ip' => ip2long($this->input->ip())];
             $uid = $this->user->insert($data);
             if ($uid) {
                 $this->user_config->insert(['uid' => $uid]);
                 // 添加默认标签
                 $this->tag->addDefaultTags($uid);
                 // 转移数据
                 $this->transferData($account->uid);
             }
             //头像放入队列获取
             $this->redis('queue')->lPush('queue:avatar:download', "{$uid}|{$userinfo['figureurl_qq_2']}");
             if ($uid) {
                 if ($this->related_account->insert(['uid' => $uid, 'app_uid' => $openid, 'app_id' => $this->config->logintype['qq'], 'access_token' => $token])) {
                     $this->model('passport')->login($uid, 'password');
                     $this->output->view('passport/qq', ['uid' => $uid]);
                 } else {
                     echo 'login error';
                 }
             } else {
                 echo 'login error';
             }
         }
     } else {
         if ($auth_action == 'bind') {
             //得到当前用户
             $uid = $this->passport->getAuthenticatedUid();
             //用户未登录
             if (!$uid) {
                 $this->output->view('passport/bind_failed', ['message' => "请您先登录", 'app' => 'qq']);
                 exit;
             }
             //检测当前登录用户是否已经绑定了qq账号,如果绑定了则要求解绑
             $result = $this->related_account->select(['where' => ['uid' => $uid]]);
             if ($result && $result[0] && $result[0]->app_id == $this->config->logintype['qq']) {
                 //已经绑定qq
                 if ($result[0]->app_uid == $openid) {
                     $this->output->view('passport/bind_failed', ['message' => "您已经绑定此QQ账号,无需再次绑定", 'app' => 'qq']);
                 } else {
                     $this->output->view('passport/bind_failed', ['message' => "您已经绑定其他QQ账号,请先解绑,然后绑定新的QQ账号", 'app' => 'qq']);
                 }
                 exit;
             }
             //绑定QQ账户
             if ($account) {
                 //如果此账户已经在数据库中存在关联,
                 $user = $this->user->one($account->uid);
                 //如果此qq账号已经绑定邮箱
                 if ($user->mail) {
                     $this->output->view('passport/bind_failed', ['message' => "此账户已经与另一账号绑定,请先解绑另一账户", 'app' => 'qq']);
                     exit;
                 } else {
                     //将第三方关联到当前用户,
                     if ($this->related_account->update(['uid' => $uid, 'access_token' => $token], ['app_uid' => $openid, 'uid' => $account->uid, 'app_id' => $this->config->logintype['qq']])) {
                         //转移数据(贴纸,标签,图片,书签)到当前用户
                         $from = $account->uid;
                         $to = $uid;
                         $this->user->mergeUserData($from, $to);
                         //成功页面
                         $this->output->view('passport/bind_success', ['app' => 'qq']);
                     } else {
                         $this->output->view('passport/bind_failed', ['message' => '关联失败', 'app' => 'qq']);
                     }
                 }
             } else {
                 if ($this->related_account->insert(['uid' => $uid, 'app_uid' => $openid, 'app_id' => $this->config->logintype['qq'], 'access_token' => $token])) {
                     //成功页面
                     $this->output->view('passport/bind_success', ['app' => 'qq']);
                 } else {
                     $this->output->view('passport/bind_failed', ['message' => '关联失败', 'app' => 'qq']);
                     exit;
                 }
             }
         }
     }
 }
예제 #19
0
<?php

//QQ:2845249491
//密碼:xumu4hUF
require_once "/var/www/html/site/phpmodule/include/QQAPI/qqConnectAPI.php";
$qc = new QC();
//
$qc->qq_callback();
//"5393EF36EA109E3AF4D1801DBDCC3A25"
$token = $qc->get_openid();
//"6EB10D3EA7459C45F077197702F9635C"
if ($token) {
    $_SESSION['token'] = $token;
    $uid = $token;
    require_once "saja/mysql.ini.php";
    $this->model = new mysql($this->config->db[0]);
    $this->model->connect();
    $query = "\n\tSELECT\n\tu.*, s.ssoid, s.name as provider_name, s.uid as provider_uid, s.switch as sso_switch\n\tFROM `{$this->config->db[0]["dbname"]}`.`{$this->config->default_prefix}sso` s \n\tLEFT OUTER JOIN `{$this->config->db[0]["dbname"]}`.`{$this->config->default_prefix}user_sso_rt` us ON\n\t\ts.prefixid = us.prefixid\n\t\tAND s.ssoid = us.ssoid\n\t\tAND us.switch = 'Y'\n\tLEFT OUTER JOIN `{$this->config->db[0]["dbname"]}`.`{$this->config->default_prefix}user` u ON\n\t\tus.prefixid = u.prefixid\n\t\tAND us.userid = u.userid\n\t\tAND u.switch = 'Y'\n\tWHERE\n\ts.prefixid = '{$this->config->default_prefix_id}' \n\tAND s.name = 'qq'\n\tAND s.uid = '{$uid}'\n\tAND s.switch = 'Y'\n\tAND u.userid IS NOT NULL\n\t";
    $table = $this->model->getQueryRecord($query);
    if (empty($table['table']['record'])) {
        //$_SESSION['sso'] = (array)$token; //$user_profile;
        $_SESSION['sso']["provider"] = 'qq';
        $_SESSION['sso']["identifier"] = $uid;
        header("location: " . $this->config->default_main . "/user/sso_register");
        die;
    }
    $user = $table['table']['record'][0];
    if ($user['switch'] != 'Y' || $user['sso_switch'] != 'Y') {
        $this->jsPrintMsg('账号已注销!!', $this->config->default_main);
    }
    $query = "\n\tSELECT *\n\tFROM `{$this->config->db[0]["dbname"]}`.`{$this->config->default_prefix}user_profile`\n\tWHERE\n\t`prefixid` = '{$this->config->default_prefix_id}' \n\tAND `userid` = '{$user['userid']}'\n\tAND `switch` =  'Y'\n\t";
예제 #20
0
function login_by_qq()
{
    include INCLUDES_PATH . 'qqapi/qqConnectAPI.php';
    global $_db, $_cache, $_user;
    $qc = new QC();
    $access_token = $qc->qq_callback();
    $qq_uid = $qc->get_openid();
    if ($qq_uid) {
        $_user = user::get_one(array('qq_uid' => $qq_uid));
        $user_id = $_user->user_id;
        $qc = new QC($access_token, $qq_uid);
        $user_info = $qc->get_user_info();
        //获取用户等基本信息
        if (!$user_id) {
            $user_id = user::register(array('screen_name' => $user_info['nickname'], 'qq_uid' => $qq_uid, 'avatar_url' => $user_info['figureurl_qq_1']));
            $_user = user::get_one(array('user_id' => $user_id));
            $res = 'new_user';
        } else {
            $res = $_user;
        }
        $_SESSION['uid'] = $user_id;
        //set_cookie('uid',$user_id);
        return $res;
    } else {
        //授权失败
    }
    return false;
}
예제 #21
0
파일: login.php 프로젝트: nachao/fang
<?php

//定义根目录边变量
// define("ROOT_PATH", dirname(__DIR__)."/");
//配置文件
require_once "game.php";
require_once "../connect2.1/API/qqConnectAPI.php";
// 初始化
$game = new game();
$qq = new QC();
// 获取第三方信息(QQ)
$key = $qq->qq_callback();
$uid = $qq->get_openid();
$user_info = $game->userBe($key);
//'20746446B01F671246B702364E5750C6'
// 判断是否有此用户的记录,没有则新添加
if (!$user_info) {
    $game->userAdd($key, $uid);
}
$CName = "ux73.com/game";
// if ( isset($_cookie[$CName]) ) {
// 	$uid = $_cookie[$CName];
// } else {
setcookie($CName, $uid, time() + 24 * 30 * 3600, "/");
//存入本地缓存 - 有效时间 1 天
// }
echo $_cookie[$CName];
// print_r($user_info);
// 关闭当前界面
// echo '<script type="text/javascript"> window.close(); </script>';
// echo $qq->qq_callback();
예제 #22
0
<?php

session_start();
require_once plugdir . "/login/qq/API/comm/config.php";
require_once CLASS_PATH . "QC.class.php";
$qc = new QC();
$acs = $qc->qq_callback();
$opid = $qc->get_openid();
$qc = new QC($acs, $opid);
$arr = $qc->get_user_info();
if (empty($opid)) {
    $this->message($logintype . '登录接口获取信息失败noopid,请联系管理员');
}
if (!is_array($arr)) {
    $this->message($logintype . '接口获取信息失败noinfo,请联系管理员');
}
/**判断信息是否写到数据库中***/
//第三方登录表 结构:oauth   id uid  token openid type addtime
//31天  *24 * 60 *60  26784400
$nowtime = time() - 26784400;
$oauthinfo = $this->mysql->select_one("select * from " . Mysite::$app->config['tablepre'] . "oauth where openid='" . $opid . "' and addtime > " . $nowtime . " and type = '" . $logintype . "' ");
$link = IUrl::creatUrl('member/bandaout');
$uid = ICookie::get('uid');
if (empty($oauthinfo)) {
    $data['uid'] = $this->member['uid'];
    $data['token'] = $acs;
    $data['openid'] = $opid;
    $data['type'] = $logintype;
    $data['addtime'] = time();
    $this->mysql->insert(Mysite::$app->config['tablepre'] . 'oauth', $data);
    if (!empty($this->member['uid'])) {
예제 #23
0
파일: callback.php 프로젝트: yeh110/Test
<?php

require_once "../API/qqConnectAPI.php";
require_once dirname(__FILE__) . "/../../../inc/common.inc.php";
$qc = new QC();
$admin = ck_login('uin', 'skey', true, true);
$db->update('user', array('qqtk' => $qc->qq_callback() . $qc->get_openid()), 'id=' . $admin['0']);
echo "绑定成功";
 /**
  * Action:OAuth 2.0 QQ
  * @return Response
  */
 public function getOauthQQ()
 {
     include_once app_path('api/qq/qqConnectAPI.php');
     $qc = new QC();
     $callback = $qc->qq_callback();
     $openid = $qc->get_openid();
     $qc = new QC($callback, $openid);
     $access_token = $qc->get_access_token();
     $arr = $qc->get_user_info();
     $nickname = $arr["nickname"];
     $credentials = array('email' => $openid, 'password' => $access_token);
     if (Auth::attempt($credentials)) {
         // Signin success, redirect to the previous page that was blocked
         return Redirect::intended();
     } else {
         $user = new User();
         $user->email = $openid;
         $user->password = $access_token;
         $user->nickname = $nickname;
         $user->bound_type = '3';
         $user->activated_at = date('Y-m-d H:m:s');
         $user->save();
         return View::make('authority.oauthQQ');
     }
 }
예제 #25
0
 /**
  * 腾讯微博分享
  */
 function tencent()
 {
     $this->type = 'QQ';
     $this->getConfig();
     vendor('qq.qq');
     $QC = new \QC();
     $QC->recorder->write("appid", $this->AppKey);
     $QC->recorder->write("appkey", $this->AppSecret);
     $QC->recorder->write("callback", 'http://' . $_SERVER['HTTP_HOST'] . "/Api/Share/tencent");
     $QC->reInit();
     //由于qq互联奇葩的回调地址规则,必须要完整的回调地址并且不能带有参数
     //所以将参数以session的形式存储
     //作者按:腾讯你个sb
     if ($_REQUEST['picurl']) {
         session("share_picurl", $_REQUEST['picurl']);
     }
     if ($_REQUEST['sharecomment']) {
         session("share_sharecomment", $_REQUEST['sharecomment']);
     }
     if ($_GET['table']) {
         session("share_table", $this->table);
     }
     if ($_GET['id']) {
         session("share_id", $this->id);
     }
     //==============================================
     if (empty($QC->recorder->read("access_token")) || empty($QC->recorder->read("openid"))) {
         if ($_GET['code']) {
             //已获得code
             $QC->qq_callback();
             $QC->get_openid();
             $QC->reInit();
             $_FILES['pic'] = "@." . session("share_picurl");
             $_POST['content'] = session("share_sharecomment") . "http://" . $_SERVER['HTTP_HOST'] . "/Portal/" . session("share_table") . "/info/id/" . session("share_id");
             $ret = $QC->add_pic_t($_POST);
             if ($ret['ret'] == 0) {
                 $this->table = session("share_table");
                 $this->id = session("share_id");
                 $this->share();
             } else {
                 alert("发表失败");
             }
         } else {
             //获取授权code
             $QC->qq_login();
         }
     } else {
         $_FILES['pic'] = "@." . session("share_picurl");
         $_POST['content'] = session("share_sharecomment");
         $ret = $QC->add_pic_t($_POST);
         if ($ret['ret'] == 0) {
             $this->share();
         } else {
             alert("发表失败");
         }
     }
 }
예제 #26
0
파일: login.php 프로젝트: norain2050/one
 public function qqcallback()
 {
     $this->load->model('user');
     $this->load->model('user_openid');
     require_once APPPATH . "libraries/QQAPI/qqConnectAPI.php";
     $qc = new QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $useropenid = $this->user_openid->get_by_openid($openid);
     if (isset($useropenid->user_id) && $useropenid->user_id > 0) {
         $this->user_openid->update(array('token' => $access_token['access_token'], 'expires' => local_to_gmt() + $access_token['expires_in'], 'refresh_token' => $access_token['refresh_token']), $useropenid->id);
         $user = $this->user->get($useropenid->user_id);
         $login_time = local_to_gmt();
         $update_row['last_login_time'] = $login_time;
         $update_row['last_login_ip'] = $this->input->ip_address();
         //自动保留登录15天
         $this->auth->set_auto_login($user->username, $user->password);
         if (isset($_COOKIE['lms_logout_url'])) {
             $url = $_COOKIE['lms_logout_url'];
             setcookie('lms_logout_url', '', time() - 3600, '/');
         } else {
             $url = base_url();
         }
         $this->user->update($update_row, $user->id);
         //保存session
         $this->auth->save_login($user);
         redirect($url);
     } else {
         if (!$useropenid) {
             if ($this->user_openid->insert(array('name' => 'qq', 'token' => $access_token['access_token'], 'openid' => $openid, 'create_time' => local_to_gmt(), 'expires' => local_to_gmt() + $access_token['expires_in'], 'refresh_token' => $access_token['refresh_token']))) {
                 redirect('register/openid/' . $openid);
             } else {
                 redirect('login/error/login_error');
             }
         } else {
             redirect('register/openid/' . $openid);
         }
     }
 }
예제 #27
0
 public function index()
 {
     //点击QQ登录
     if (isset($_REQUEST['qq'])) {
         require_once "./Public/QQLogin/qqConnectAPI.php";
         $qc = new QC();
         $qc->qq_login();
         die;
     }
     //QQ登录后返回处理
     if (isset($_REQUEST['code'])) {
         require_once "./Public/QQLogin/qqConnectAPI.php";
         $qc = new QC();
         $acs = $qc->qq_callback();
         $oid = $qc->get_openid();
         $qc = new QC($acs, $oid);
         $qq_user = $qc->get_user_info();
         //p($user);die;
         $qq_open_id = $qc->get_openid();
         $username = $qq_user['nickname'];
         $sex = $qq_user['gender'] == '男' ? 1 : 0;
         $user = M('user')->where(array('qq_open_id' => $qq_open_id))->find();
         if (!$user) {
             //第一次登录,保存用户信息
             $data = array('qq_open_id' => $qq_open_id, 'username' => $username, 'sex' => $sex, 'description' => $this->_post('description'), 'register_time' => time());
             //p($data);die;
             $user_id = M('user')->add($data);
             if ($user_id) {
                 session('user_id', $user_id);
                 session('username', $this->_post('username'));
                 redirect(U('Index/index'));
                 die;
             } else {
                 redirect(U('Index/index'));
                 die;
             }
         } else {
             //以前登录过
             if ($user['lock'] > time()) {
                 $this->error('您已被锁定,请过段时间在试。。。');
                 die;
             }
             session('user_id', $user['user_id']);
             session('username', $user['username']);
             redirect(U('Index/index'));
         }
         die;
     }
     if (isset($_SESSION['user_id'])) {
         redirect(U('Index/index'));
         die;
     }
     if (!$this->isPost()) {
         $this->display();
         die;
     }
     $username = $this->_post('username');
     $password = $this->_post('password', 'md5');
     $where = array('username' => $username);
     $user = M('user')->where($where)->find();
     p($username);
     p($password);
     //p($user);die;
     if ($user['lock'] == 1) {
         $this->error("您已被锁定,请过段时间在试。。。");
     }
     if (!$user || $user['password'] != $password) {
         $this->error("用户名或者密码错误!~_~");
     }
     session('user_id', $user['user_id']);
     session('username', $user['username']);
     redirect(__APP__);
 }
예제 #28
0
<?php

require_once "../../API/qqConnectAPI.php";
$qc = new QC();
$qc->qq_login();
echo $qc->qq_callback();
echo $qc->get_openid();
예제 #29
0
 public function callback()
 {
     es_session::start();
     require_once APP_ROOT_PATH . "system/api_login/qqv2/qqConnectAPI.php";
     $qc = new QC();
     $access_token = $qc->qq_callback();
     $openid = $qc->get_openid();
     $use_info_keysArr = array("access_token" => $access_token, "openid" => $openid, "oauth_consumer_key" => $this->api['config']['app_key']);
     $use_info_url = "https://graph.qq.com/user/get_user_info";
     $graph_use_info_url = $qc->urlUtils->combineURL($use_info_url, $use_info_keysArr);
     $response = $qc->urlUtils->get_contents($graph_use_info_url);
     if ($response['ret'] != 0) {
         showErr("授权失败,错误信息:" . $response['msg']);
         die;
     }
     $msg = json_decode($response, 1);
     //file_put_contents(APP_ROOT_PATH."/public/qqv2_user_info.php",print_r($msg,1));
     //name,province,city,avatar,token,field,token_field(授权的字段),sex
     $api_data['id'] = $openid;
     $api_data['field'] = 'qq_id';
     $api_data['token'] = $access_token;
     $api_data['token_field'] = "qq_token";
     $api_data['name'] = $msg['nickname'];
     $api_data['province'] = $msg['province'];
     $api_data['city'] = $msg['city'];
     $api_data['avatar'] = $msg['figureurl_2'];
     //100*100
     if ($msg['gender'] == '女') {
         $api_data['sex'] = 0;
     } else {
         if ($msg['gender'] == '男') {
             $api_data['sex'] = 1;
         } else {
             $api_data['sex'] = -1;
         }
     }
     if ($api_data['id'] != "") {
         es_session::set("api_user_info", $api_data);
     }
     $user_data = $GLOBALS['db']->getRow("select * from " . DB_PREFIX . "user where qq_id = '" . $openid . "' and qq_id <> '' and is_effect=1");
     if ($user_data) {
         es_session::delete("api_user_info");
         $GLOBALS['db']->query("update " . DB_PREFIX . "user set qq_token = '" . $api_data['token'] . "',login_ip = '" . get_client_ip() . "',login_time= " . get_gmtime() . " where id =" . $user_data['id']);
         es_session::set("user_info", $user_data);
         app_redirect_preview();
     } else {
         if ($GLOBALS['user_info']) {
             $GLOBALS['db']->query("update " . DB_PREFIX . "user set qq_token = '" . $api_data['id'] . "',qq_token = '" . $api_data['token'] . "' where id =" . intval($GLOBALS['user_info']['id']));
             app_redirect(url("settings#bind"));
         } else {
             app_redirect(url("user#api_register"));
         }
     }
 }