Ejemplo n.º 1
0
function WB_callback()
{
    $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
    if (isset($_REQUEST['code'])) {
        $keys = array();
        $keys['code'] = $_REQUEST['code'];
        //                $login_type = getvaluebykey('login_type');
        //                $userid = getvaluebykey('userid');
        //                print_r($userid);exit;
        //                $headpic = getvaluebykey('headpic');
        //                $emailnum  = getvaluebykey('emailnum');
        $keys['redirect_uri'] = WB_CALLBACK_URL;
        //.'?login_type='.$login_type.'_'.$userid.'_'.$headpic.'_'.$emailnum;
        try {
            $token = $o->getAccessToken('code', $keys);
            //print_r($token);
        } catch (OAuthException $e) {
        }
    }
    if ($token) {
        $_SESSION['token'] = $token;
        $c1 = new SaeTClientV2(WB_AKEY, WB_SKEY, $token['access_token']);
        $userinfo = $c1->show_user_by_id($token[uid]);
        setcookie('weibojs_' . $o->client_id, http_build_query($token));
        $cb_arr = array('access_token' => $token['access_token'], 'openid' => $token[uid], 'nick' => $userinfo['name']);
        return $cb_arr;
    }
}
Ejemplo n.º 2
0
 function callbackAction()
 {
     $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
     $token = $this->getToken($o);
     if ($token) {
         $tokenNamespace = new Zend_Session_Namespace('token');
         $tokenNamespace->token = $token;
         setcookie('weibojs_' . $o->client_id, http_build_query($token));
         $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $token['access_token']);
         $uid_get = $c->get_uid();
         $uid = $uid_get['uid'];
         $db = Zend_Registry::get('db');
         $adapter = new WeiboLoginAuthAdapter($uid);
         $auth = Zend_Auth::getInstance();
         $result = $auth->authenticate($adapter);
         $consumerModel = new Consumer();
         $consumer_id = $db->fetchOne("SELECT id FROM consumer WHERE weiboid = :temp and state='ACTIVE'", array('temp' => $uid));
         $consumer = $consumerModel->find($consumer_id)->current();
         if ($result->isValid()) {
             $authNamespace = new Zend_Session_Namespace('Zend_Auth');
             $authNamespace->user = $consumer;
             $authNamespace->role = 'consumer';
             $logModel = new Log();
             $logId = $logModel->insert(array('consumer_id' => $consumer->id, 'date' => date("Y-m-d H:i:s"), 'event' => 'LOGIN'));
             //				$this->_helper->redirector('index', 'home');
             $this->_helper->redirector('index', 'tag');
         } else {
             $this->first();
         }
     }
 }
Ejemplo n.º 3
0
 function actionReturn()
 {
     $o = new \SaeTOAuthV2($this->app_key, $this->app_secret);
     if ($_REQUEST['code']) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = $this->url;
         try {
             $token = $o->getAccessToken('code', $keys);
             $access_token = $token['access_token'];
             $c = new \SaeTClientV2($this->app_key, $this->app_secret, $access_token);
             $uid_get = $c->get_uid();
             $uid = $uid_get['uid'];
             $me = $c->show_user_by_id($uid);
             $me['name'] = $me['screen_name'];
             $me['options'] = array('url' => $me['profile_url']);
             $r = $this->member_get_third_set_user($me, $this->oauth_id, $access_token);
             flash('success', __('login success'));
             $this->redirect(return_url());
         } catch (OAuthException $e) {
             flash('error', __('login error'));
             $this->redirect(return_url());
         }
     }
     exit;
 }
Ejemplo n.º 4
0
/**
 * 此函数,供Callback处调用,如果返回false,认证失败,否则返回以下哈希表:
 *   last_key  ->  callback得到的last_key
 *   oauth_token ->  上述lastkey中的oauth_token
 *   oauth_token_secret -> 上述lastkey中的oauth_token_secret
 *   user_id -> 用户ID
 *   user_name ->  用户昵称
 *   user_email -> 暂不提供
 */
function AuthCallback_sina()
{
    // 取得新浪Auth对象
    $sinaappkey = $_SESSION['sinaappkey'];
    $sinasecret = $_SESSION['sinasecret'];
    $o = new SaeTOAuthV2($sinaappkey, $sinasecret);
    if (isset($_REQUEST['code'])) {
        $keys = array();
        $keys['code'] = $_REQUEST['code'];
        $keys['redirect_uri'] = $_SESSION['wb_callback_url'];
        try {
            $last_key = $o->getAccessToken('code', $keys);
        } catch (OAuthException $e) {
        }
    }
    if ($last_key) {
        $rtn = array();
        $rtn['last_key'] = $last_key;
        $rtn['oauth_token'] = $keys['code'];
        $rtn['oauth_token_secret'] = $last_key['access_token'];
        $client = new SaeTClientV2($sinaappkey, $sinasecret, $last_key['access_token']);
        $uid_get = $client->get_uid();
        $rtn['user_id'] = $uid_get['uid'];
        $user_message = $client->show_user_by_id($rtn['user_id']);
        $rtn['user_name'] = $user_message['screen_name'];
        return $rtn;
    } else {
        return $last_key;
    }
}
Ejemplo n.º 5
0
 public function weibocallback($code)
 {
     $cfg = K::$system->config->get('connect');
     if (defined('IN_MOBILE')) {
         $mobile = K::$system->config->get('mobile');
         $callback = $mobile['url'] . '/' . K::M('helper/link')->mklink('passport:weibocallback');
     } else {
         $site = K::$system->config->get('site');
         $callback = $site['siteurl'] . '/' . K::M('helper/link')->mklink('passport:weibocallback');
     }
     if (empty($cfg['weibo_is_open'])) {
         $this->err->add('很抱歉网站管理员还未开启微博登录功能', 201);
         return false;
     }
     $keys = array();
     $keys['code'] = $code;
     $keys['redirect_uri'] = $callback;
     $o = new SaeTOAuthV2($cfg['weibo_app_id'], $cfg['weibo_app_key']);
     try {
         $token = $o->getAccessToken('code', $keys);
     } catch (OAuthException $e) {
         $this->err->add($e->getMessage(), 201);
         return false;
     }
     $c = new SaeTClientV2($cfg['weibo_app_id'], $cfg['weibo_app_key'], $token['access_token']);
     $ms = $c->home_timeline();
     // done
     $uid_get = $c->get_uid();
     $uid = $uid_get['uid'];
     $user_message = $c->show_user_by_id($uid);
     //根据ID获取用户等基本信息
     return $this->login($uid, $user_message);
 }
Ejemplo n.º 6
0
 function callback()
 {
     $o = new SaeTOAuthV2(c('weibo_akey'), c('weibo_skey'));
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = 'http://' . c('site_domain') . '/?c=weibo&a=callback';
         try {
             $token = $o->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
         }
         $_SESSION['weibo_token'] = $token;
         // get user info
         $c = new SaeTClientV2(c('weibo_akey'), c('weibo_skey'), atoken());
         $info = $c->show_user_by_id(wbuid());
         if (strlen($info['name']) < 1) {
             return info_page('登入失败,请去吃点零食后重试');
         }
         $_SESSION['weibo_uid'] = $info['name'];
         $_SESSION['uname'] = $info['name'];
         $_SESSION['avatar'] = $info['profile_image_url'];
         //print_r( $_SESSION );
         header("Location: /?a=index");
     }
 }
Ejemplo n.º 7
0
 function get_info()
 {
     if ($this->dx_auth->is_logged_in()) {
         echo "你已经登陆了";
     } else {
         $this->load->model('m_open');
         session_start();
         require_once APPPATH . 'libraries/weibo/config.php';
         require_once APPPATH . 'libraries/weibo/saetv2.ex.class.php';
         $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
         $o->set_debug(DEBUG_MODE);
         if (isset($_REQUEST['code'])) {
             $keys = array();
             // 验证state
             $state = $_REQUEST['state'];
             if (empty($state) || $state !== $_SESSION['weibo_state']) {
                 echo '非法请求!';
                 exit;
             }
             unset($_SESSION['weibo_state']);
             $keys['code'] = $_REQUEST['code'];
             $keys['redirect_uri'] = WB_CALLBACK_URL;
             try {
                 $token = $o->getAccessToken('code', $keys);
             } catch (OAuthException $e) {
             }
         }
         if ($token) {
             $_SESSION['token'] = $token;
             setcookie('weibojs_' . $o->client_id, http_build_query($token));
             //echo "success";
             $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token']);
             $c->set_debug(DEBUG_MODE);
             $uid_get = $c->get_uid();
             $uid = $uid_get['uid'];
             if (!$uid) {
                 echo "error";
             }
             $user = $c->show_user_by_id($uid);
             //根据ID获取用户等基本信息
             //echo $user['screen_name'];
             if ($this->m_open->is_id($uid)) {
                 $this->m_open->login($uid);
                 //echo "登陆";
                 //echo $uid;
                 //$c->update( "坑爹的api终于调好了");
                 redirect('line');
             } else {
                 $this->m_open->register($user);
                 $this->m_open->create($user);
                 //echo $uid;
                 //echo "注册";
                 redirect('line');
             }
         } else {
             echo "fail";
         }
     }
 }
Ejemplo n.º 8
0
function get_user_info($config, $oauth_data)
{
    $c = new SaeTClientV2($config['appid'], $config['appkey'], $oauth_data['oauth_openid']);
    $get = $c->get_uid();
    $m = $c->show_user_by_id($get['uid']);
    //根据ID获取用户等基本信息
    return array('name' => $m['name'], 'avatar' => $m['profile_image_url']);
}
Ejemplo n.º 9
0
 /**
  * 授权回调地址
  */
 public function callback()
 {
     if (empty($_GET['code'])) {
         throw new Typecho_Exception(_t('无效请求!'));
     }
     //跳转
     if (!class_exists('SaeTOAuthV2')) {
         require_once './saetv2.ex.class.php';
     }
     $saeto_client = new SaeTOAuthV2($this->config->client_id, $this->config->client_secret);
     //取access_token
     $access_token = $saeto_client->getAccessToken('code', array('code' => trim($_GET['code']), 'redirect_uri' => $this->config->callback_url));
     if (empty($access_token) || !is_array($access_token) || empty($access_token['uid'])) {
         throw new Typecho_Exception(_t('获取access_token失败,请返回重新授权!'));
     }
     $table = $this->db->getPrefix() . self::$tableName;
     $query = $this->db->query("SELECT * FROM {$table} WHERE openid='{$access_token['uid']}' AND plateform='sina'");
     $users_oauth = $this->db->fetchRow($query);
     if (!empty($users_oauth['uid'])) {
         //该新浪帐号已经绑定了用户
         if (Typecho_Widget::widget('Widget_User')->hasLogin()) {
             /** 直接返回 */
             $this->response->redirect(Typecho_Widget::widget('Widget_Options')->index);
         } else {
             //让其直接登陆
             $this->setUserLogin($users_oauth['uid']);
             if (!Typecho_Widget::widget('Widget_User')->pass('contributor', true)) {
                 /** 不允许普通用户直接跳转后台 */
                 $this->response->redirect(Typecho_Widget::widget('Widget_Options')->profileUrl);
             } else {
                 $this->response->redirect(Typecho_Widget::widget('Widget_Options')->adminUrl);
             }
         }
         exit;
     }
     //该新浪帐号未绑定过
     /** 如果已经登录 */
     if (Typecho_Widget::widget('Widget_User')->hasLogin()) {
         /** 直接绑定 */
         $cookieUid = Typecho_Cookie::get('__typecho_uid');
         $this->bindOauthUser($cookieUid, $access_token['uid'], 'sina', $access_token['expires_in']);
         $this->response->redirect(Typecho_Widget::widget('Widget_Options')->index);
     } else {
         //取用户信息
         $saetc_client = new SaeTClientV2($this->config->client_id, $this->config->client_secret, $access_token['access_token']);
         $weibo_user = $saetc_client->show_user_by_id($access_token['uid']);
         //创建用户
         $uid = $this->registerFromWeiboUser($weibo_user);
         if (!$uid) {
             throw new Typecho_Exception(_t('创建帐号失败,请联系管理员!'));
         }
         $this->setUserLogin($uid);
         $this->bindOauthUser($uid, $access_token['uid'], 'sina', $access_token['expires_in']);
         $this->response->redirect(Typecho_Widget::widget('Widget_Options')->profileUrl);
     }
     //构造用户帐号
     exit;
 }
Ejemplo n.º 10
0
 /**
  * 关注
  */
 public function follow($bind_user, $uid)
 {
     $info = unserialize($bind_user['info']);
     $client = new SaeTClientV2($this->setting['app_key'], $this->setting['app_secret'], $info['access_token']);
     try {
         return $client->follow_by_id($uid);
     } catch (Exception $e) {
     }
 }
Ejemplo n.º 11
0
 private function getUserName()
 {
     $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token']);
     $ms = $c->home_timeline();
     $uid_get = $c->get_uid();
     $uid = $uid_get['uid'];
     $user_message = $c->show_user_by_id($uid);
     return $user_message['screen_name'];
 }
Ejemplo n.º 12
0
 /**
  * 獲取用戶信息
  * @param type $access_token
  * @return type
  * Array ( [id] => 3767777785 [idstr] => 3767777785 [class] => 1 
  * [screen_name] => soqugame [name] => soqugame 
  * [province] => 11 [city] => 1 [location] => 北京 东城区 [description] => [url] => 
  * [profile_image_url] => http://tp2.sinaimg.cn/3767777785/50/0/1 
  * [profile_url] => u/3767777785 [domain] => [weihao] => [gender] => m [followers_count] => 3 [friends_count] => 18 [statuses_count] => 0 [favourites_count] => 0 [created_at] => Tue Sep 03 16:48:05 +0800 2013 [following] => [allow_all_act_msg] => [geo_enabled] => 1 [verified] => 1 [verified_type] => 2 [remark] => [ptype] => 0 [allow_all_comment] => 1 [avatar_large] => http://tp2.sinaimg.cn/3767777785/180/0/1 [avatar_hd] => http://tp2.sinaimg.cn/3767777785/180/0/1 [verified_reason] => 上海搜趣广告有限公司 [follow_me] => [online_status] => 0 [bi_followers_count] => 0 [lang] => zh-cn [star] => 0 [mbtype] => 0 [mbrank] => 0 [block_word] => 0 )
  */
 public function getUser($access_token)
 {
     $c = new SaeTClientV2($this->_params['WB_AKEY'], $this->_params['WB_SKEY'], $access_token);
     $ms = $c->home_timeline();
     // done
     $uid_get = $c->get_uid();
     $uid = $uid_get['uid'];
     $user_message = $c->show_user_by_id($uid);
     //根据ID获取用户等基本信息
     return $user_message;
 }
Ejemplo n.º 13
0
function send2wbto($content)
{
    $c = new SaeTClientV2(WB_AKEY, WB_SKEY, file_get_contents("../include/weibo/token.txt"));
    $ret = $c->update($content);
    //发送微博
    if (isset($ret['error_code']) && $ret['error_code'] > 0) {
        echo "<p>发送失败,错误:{$ret['error_code']}:{$ret['error']}</p>";
    } else {
        echo "<p>发送成功</p>";
    }
}
Ejemplo n.º 14
0
 function getUserInfo()
 {
     require_once dirname(__FILE__) . "/API/saetv2.ex.class.php";
     $token = ISession::get('token');
     $c = new SaeTClientV2(ISession::get('apiKey'), ISession::get('apiSecret'), $token['access_token']);
     $ms = $c->home_timeline();
     $uid_get = $c->get_uid();
     $uid = $uid_get['uid'];
     $user_message = $c->show_user_by_id($uid);
     $userInfo = array();
     $userInfo['id'] = $uid;
     $userInfo['name'] = isset($user_message['screen_name']) ? $user_message['screen_name'] : '';
     return $userInfo;
 }
Ejemplo n.º 15
0
 public function wbcallback()
 {
     Vendor('Weibo.saetv2#ex#class');
     $o = new \SaeTOAuthV2(C('weibo.wb_akey'), C('weibo.wb_skey'));
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $this->_request('code');
         $keys['redirect_uri'] = C('weibo.wb_callback_url');
         try {
             $token = $o->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
         }
     }
     if ($token) {
         // 获取用户信息
         $c = new SaeTClientV2(C('weibo.wb_akey'), C('weibo.wb_skey'), $token['access_token']);
         // $ms  = $c->home_timeline(); // done
         $uid_get = $c->get_uid();
         $uid = $uid_get['uid'];
         $uinfo = $c->show_user_by_id($uid);
         //根据ID获取用户等基本信息
         // 查询是否已经绑定
         $this->user_model = D('user');
         $user = $this->user_model->field('id,email,password')->where(array('wb_token' => $token['access_token'], 'wb_openid' => $uid))->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['avatar_hd']);
             session('openid', $uinfo['id']);
             session('token', $token['access_token']);
             session('uname', $uinfo['screen_name']);
             session('oatype', 'wb_');
             //print_r($uinfo);
             $this->redirect('join');
         }
     } else {
         $this->error('授权失败。');
     }
 }
Ejemplo n.º 16
0
 /**
  * 新浪微博分享
  */
 function sina()
 {
     $this->type = 'SINA';
     $this->getConfig();
     //判断新浪微博是否已经登陆
     if (!empty($this->token)) {
         $_SESSION['sina_token'] = $this->token;
         vendor("sina.sina");
         $c = new \SaeTClientV2($this->AppKey, $this->AppSecret, $_SESSION['sina_token']['access_token']);
         $sharecomment = "{$_REQUEST['sharecomment']}http://" . $_SERVER['HTTP_HOST'] . "/Portal/{$this->table}/info/id/{$this->id}";
         $sharecomment = urlencode($sharecomment);
         $ret = $c->upload($sharecomment, 'http://' . $_SERVER['HTTP_HOST'] . $_REQUEST['picurl']);
         //$ret = $c->upload( $_REQUEST['sharecomment'],'http://'.$_SERVER['HTTP_HOST'].$_REQUEST['picurl']);
         if (isset($ret['error_code']) && $ret['error_code'] > 0) {
             echo "<p>发送失败,错误:{$ret['error_code']}:{$ret['error']}</p>";
         } else {
             $this->share();
         }
         exit;
     }
     $this->callback .= "/sharecomment/{$_REQUEST['sharecomment']}/picurl/{$_REQUEST['picurl']}";
     if (isset($_REQUEST['code'])) {
         //获取accessToken
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = $this->callback;
         try {
             vendor("sina.sina");
             $o = new \SaeTOAuthV2($this->AppKey, $this->AppSecret);
             $this->token = $o->getAccessToken('code', $keys);
         } catch (\OAuthException $e) {
             exit($e->getMessage());
         }
     } else {
         //新浪微博登陆
         $this->OAuthor();
     }
     //判断是否授权成功
     if ($this->token) {
         $_SESSION['sina_token'] = $this->token;
         header("Content-type:text/html;charset=utf-8");
         echo "新浪微博登陆成功,请重新分享";
     } else {
         exit("授权失败!");
     }
 }
Ejemplo n.º 17
0
 public function callback()
 {
     $appkey = $this->config->get('weibo_login_appkey');
     $appsecret = $this->config->get('weibo_login_appsecret');
     $callback_url = $this->url->link('extension/module/weibo_login/callback', '', true);
     $this->load->language('extension/module/weibo_login');
     $data['text_weibo_login'] = $this->language->get('text_weibo_login');
     include_once DIR_SYSTEM . 'library/weibo/saetv2.ex.class.php';
     $o = new SaeTOAuthV2($appkey, $appsecret);
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = $callback_url;
         try {
             $token = $o->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
         }
     }
     if ($token) {
         //setcookie( 'weibojs_'.$o->client_id, http_build_query($token) );
         $c = new SaeTClientV2($appkey, $appsecret, $token['access_token']);
         $ms = $c->home_timeline();
         $uid_get = $c->get_uid();
         $uid = $uid_get['uid'];
         $user_message = $c->show_user_by_id($uid);
         $this->session->data['weibo_login_access_token'] = $token['access_token'];
         $this->session->data['weibo_login_uid'] = $uid;
         if ($this->customer->login_weibo($this->session->data['weibo_login_access_token'], $this->session->data['weibo_login_uid'])) {
             unset($this->session->data['guest']);
             // Default Shipping Address
             $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['weibo_login_warning'] = sprintf($this->language->get('text_weibo_login_warning'), $this->config->get('config_name'));
             $this->response->redirect($this->url->link('account/login', '', 'SSL'));
         }
     } else {
         echo $this->language->get('text_weibo_fail');
     }
 }
 public function index()
 {
     if ($this->config->get('weibo_login_status') !== '1') {
         $this->redirect($this->url->link('account/login', '', 'SSL'));
     }
     $this->load->model('account/weibo_login');
     $weibo_uid = '';
     if ($this->request->server['REQUEST_METHOD'] == 'GET') {
         if (isset($_REQUEST['code'])) {
             require_once DIR_SYSTEM . 'weiboSDK/oauth2.class.php';
             $appkey = $this->config->get('weibo_login_appkey');
             $appsecret = $this->config->get('weibo_login_secret');
             $o = new SaeTOAuthV2($appkey, $appsecret);
             $keys = array();
             $keys['code'] = $_REQUEST['code'];
             $keys['redirect_uri'] = $this->url->link('account/weibo_login');
             try {
                 $token = $o->getAccessToken('code', $keys);
                 $c = new SaeTClientV2($appkey, $appsecret, $token['access_token']);
                 $uid_get = $c->get_uid();
                 $weibo_uid = $uid_get['uid'];
             } catch (OAuthException $e) {
             }
         } else {
             $this->response->redirect($this->url->link('account/login', '', 'SSL'));
         }
     } else {
         // POST
         $weibo_uid = $this->request->post['weibo_uid'];
     }
     if (empty($weibo_uid)) {
         $this->response->redirect($this->url->link('account/login', '', 'SSL'));
     }
     if (!$this->model_account_weibo_login->getUidRecord($weibo_uid)) {
         // New customer
         $this->model_account_weibo_login->addCustomer($weibo_uid);
     }
     if ($this->model_account_weibo_login->getUidRecord($weibo_uid)) {
         unset($this->session->data['guest']);
         $customerInfo = $this->model_account_weibo_login->getCustomerInfoByUid($weibo_uid);
         $this->session->data['customer_id'] = $customerInfo['customer_id'];
         $this->customer->loginThridPart($customerInfo);
         $this->response->redirect($this->url->link('account/account'));
     }
 }
Ejemplo n.º 19
0
 function sina_oauth_back()
 {
     require_once APPPATH . 'libraries/sina/saetv2.ex.class.php';
     $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
     $back_url = base_url() . 'index.php?c=oauth&m=sina_oauth_back';
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = $back_url;
         try {
             $token = $o->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
         }
     }
     $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $token['access_token']);
     $ms = $c->home_timeline();
     // done
     $uid_get = $c->get_uid();
     $uid = $uid_get['uid'];
     $user_message = $c->show_user_by_id($uid);
     //根据ID获取用户等基本信息
     if ($user_message['gender'] == 'm') {
         $user_data['tu_gender'] = 0;
     } else {
         $user_data['tu_gender'] = 1;
     }
     $user_data['tu_weibo_nickname'] = $user_message['screen_name'];
     $user_data['tu_source'] = 0;
     $weibo_user_check = $this->tickets->select('users', $user_data);
     if ($weibo_user_check) {
         $final_user = $weibo_user_check[0];
     } else {
         $save_dir = 'api_images';
         $image = $user_message['avatar_large'];
         $image_new_name = $this->generate_code(10) . '.jpg';
         $image = $this->getImage($image, $save_dir, $image_new_name, 1);
         $user_data['tu_portrait'] = $image['save_path'];
         $user_data['tu_created'] = date('Y-m-d H:i:s');
         $result = $this->tickets->insert('users', $user_data);
         $temp_user = $this->tickets->select('users', array('tu_id' => $result));
         $final_user = $temp_user[0];
     }
     setcookie('user_cookie', serialize($final_user), time() + 3600 * 24, '/');
     redirect('/main/index');
 }
Ejemplo n.º 20
0
 function userInfo($token)
 {
     $c = new SaeTClientV2($this->sina_akey, $this->sina_skey, $token);
     $home = $c->home_timeline();
     // done
     $uid_get = $c->get_uid();
     $uid = $uid_get['uid'];
     $me = $c->show_user_by_id($uid);
     //根据ID获取用户等基本信息
     $user['id'] = $me['id'];
     $user['type'] = $this->type;
     $user['uname'] = $me['name'];
     $user['province'] = $me['province'];
     $user['city'] = $me['city'];
     $user['location'] = $me['location'];
     $user['email'] = $me['data']['email'];
     $user['userface'] = str_replace($user['id'] . '/50/', $user['id'] . '/180/', $me['profile_image_url']);
     $user['sex'] = $me['gender'] == 'm' ? 1 : 0;
     return $user;
 }
 /**
  * 新浪注册
  */
 function registerSina()
 {
     $c = null;
     try {
         $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $this->token);
     } catch (Exception $ex) {
         $this->clientError(_('invalid_access_token'));
         return;
     }
     $uid_get = $c->get_uid();
     $error = $uid_get['error'];
     if (!empty($error)) {
         $this->clientError(_('invalid_access_token'));
         return;
     }
     $uid = $uid_get['uid'];
     $this->user_message = $c->show_user_by_id($uid);
     //根据ID获取用户等基本信息
     $this->regist_common($uid, User::PLATFORM_TYPE_SINA, $this->user_message['screen_name'], $this->user_message['profile_image_url'], $this->user_message['description'], $this->user_message['gender'], null);
 }
Ejemplo n.º 22
0
 /**
  * 新浪微博回调地址
  * sinawb login
  */
 public function actionSinawb_callback()
 {
     require_once Yii::getPathOfAlias('ext') . "/OAuth/sinawb/config.php";
     require_once Yii::getPathOfAlias('ext') . "/OAuth/sinawb/saetv2.ex.class.php";
     $sinawb = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
     if (isset($_REQUEST['code'])) {
         $keys = array();
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = WB_CALLBACK_URL;
         try {
             $token = $sinawb->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
             throw new CHttpException(500, 'Error:' . $e->getMessage());
         }
     }
     if ($token) {
         $access_token = Yii::app()->session['access_token'] = $token['access_token'];
         $openid = $token['uid'];
         //设置cookie
         $cookie_name = 'weibojs_' . $openid;
         $cookie = new CHttpCookie($cookie_name, http_build_query($token));
         $cookie->expire = time() + 60 * 60 * 24 * 30;
         //有限期30天
         Yii::app()->request->cookies[$cookie_name] = $cookie;
         //获取用户信息
         $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $access_token);
         $user_info = $c->show_user_by_id($openid);
         //根据ID获取用户等基本信息
         if ($user_info['error']) {
             throw new CHttpException('500', Yii::t('common', 'Login Failed') . '(' . $user_info['error_code'] . ')');
         }
         //查看是否已绑定
         $bind = OAuthSinawb::model()->findByPk($openid);
         //数据
         $data = array('type' => 'sinawb', 'access_token' => $access_token, 'openid' => $openid, 'uid' => $bind ? $bind->uid : 0, 'username' => $user_info['screen_name'], 'avatar' => $user_info['avatar_large']);
         //绑定注册
         $this->bind_register($bind, $data);
     } else {
         $this->message('error', Yii::t('common', 'Login Failed') . '(sinawb_x_0000)', $this->createUrl('user/login'));
     }
 }
Ejemplo n.º 23
0
 function open()
 {
     session_start();
     require_once APPPATH . 'libraries/weibo/config.php';
     require_once APPPATH . 'libraries/weibo/saetv2.ex.class.php';
     $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
     $o->set_debug(DEBUG_MODE);
     if (isset($_REQUEST['code'])) {
         $keys = array();
         // 验证state
         $state = $_REQUEST['state'];
         if (empty($state) || $state !== $_SESSION['weibo_state']) {
             echo '非法请求!';
             exit;
         }
         unset($_SESSION['weibo_state']);
         $keys['code'] = $_REQUEST['code'];
         $keys['redirect_uri'] = WB_CALLBACK_URL;
         try {
             $token = $o->getAccessToken('code', $keys);
         } catch (OAuthException $e) {
         }
     }
     if ($token) {
         $_SESSION['token'] = $token;
         setcookie('weibojs_' . $o->client_id, http_build_query($token));
         echo "success";
         $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token']);
         $c->set_debug(DEBUG_MODE);
         $uid_get = $c->get_uid();
         $uid = $uid_get['uid'];
         $user = $c->show_user_by_id($uid);
         //根据ID获取用户等基本信息
         echo $user['screen_name'];
         //利用一个方法将weibo_id存入users
         //利用一个方法将weibo个人信息存入info中
     } else {
         echo "fail";
     }
 }
Ejemplo n.º 24
0
 /**
  *
  * 功能:微博登陆
  */
 public static function weiboLogin($code)
 {
     import('Vendor.Weibo.saetv2');
     $weibo = new \SaeTOAuthV2(WB_APPKEY, WB_SKEY);
     $params = array('client_id' => WB_APPKEY, 'client_secret' => WB_SKEY, 'grant_type' => 'authorization_code', 'code' => $code, 'redirect_uri' => WB_REDIRECT_URI);
     $accessToken = $weibo->getAccessToken('code', $params);
     if (!$accessToken || $accessToken['access_token'] == '' || !$accessToken['uid']) {
         return array('status' => false, 'msg' => '登陆失败,获取access_token失败');
     }
     $clientModel = new \SaeTClientV2(WB_APPKEY, WB_SKEY, $accessToken['access_token']);
     $userInfo = $clientModel->show_user_by_id($accessToken['uid']);
     if ($userInfo['error_code']) {
         return array('status' => false, 'msg' => $userInfo['error']);
     }
     //判断本地是否有该用户
     $rs = M('Users')->where('weiboid=' . $accessToken['uid'])->find();
     if (!$rs) {
         $data['username'] = '';
         $data['nickname'] = $userInfo['screen_name'];
         $data['avator'] = $userInfo['avatar_large'];
         $data['salt'] = '';
         $data['passwd'] = '';
         $data['weiboid'] = $accessToken['uid'];
         $data['address'] = $userInfo['location'];
         $data['ip'] = get_client_ip();
         $data['posttime'] = time();
         $userId = M('Users')->add($data);
         if (!$userId) {
             return array('status' => false, 'msg' => '登陆失败');
         }
     }
     session(array("name" => SESSION_ID, 'path' => "/", "expire" => $accessToken['expires_in']));
     session(SESSION_ID, $rs ? $rs['userid'] : $userId);
     session(array("name" => SESSION_TOKEN, 'path' => "/", "expire" => $accessToken['expires_in']));
     session(SESSION_TOKEN, $rs ? $rs['userid'] : $userId);
     cookie("__info__", authcode(serialize(array('nickname' => $userInfo['screen_name'], 'userid' => $rs ? $rs['userid'] : $userId, 'avator' => $userInfo['avatar_large'])), "ENCODE", SESSION_AUTH, $accessToken['expires_in']));
     return array('status' => true, 'msg' => '登陆成功');
 }
Ejemplo n.º 25
0
 /**
  * Sina Callback
  */
 public function actionSinacallback()
 {
     set_time_limit(0);
     $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);
     if ($code = $this->request->getQuery('code')) {
         $keys = array();
         $keys['code'] = $code;
         $keys['redirect_uri'] = WB_CALLBACK_URL;
         try {
             if (Yii::app()->session["weibo_access_token"]) {
                 $access_token = Yii::app()->session["weibo_access_token"];
                 $sns_id = Yii::app()->session['user']['sns_uid'];
             } else {
                 $token = $o->getAccessToken('code', $keys);
                 $access_token = $token["access_token"];
                 $sns_id = $token["uid"];
             }
             $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $access_token);
             $basic_account = $c->show_user_by_id($sns_id);
             if ($user = $this->getUser($basic_account['id'])) {
                 $this->refreshSnsUser($user['uid'], $access_token, $basic_account);
                 Yii::app()->session['is_login'] = "******";
                 Yii::app()->session['user'] = $user;
             } else {
                 if ($user = $this->regUser($access_token, $basic_account)) {
                     Yii::app()->session["is_login"] = "******";
                     Yii::app()->session["user"] = $user;
                     $this->responseJSON($user, 'success');
                 }
             }
             echo "Success! Please close this window";
         } catch (oAuthException $e) {
             echo 'error';
         }
     } else {
         echo 'error';
     }
 }
Ejemplo n.º 26
0
    function callback()
    {
        import("Org.Util.saetv2");
        $o = new \SaeTOAuthV2(WB_AKEY, WB_SKEY);
        if (isset($_REQUEST['code'])) {
            $keys = array();
            $keys['code'] = $_REQUEST['code'];
            $keys['redirect_uri'] = WB_CALLBACK_URL;
            try {
                $token = $o->getAccessToken('code', $keys);
            } catch (OAuthException $e) {
            }
        }
        if ($token) {
            session("token", $token);
            //$_SESSION['token'] = $token
            setcookie('weibojs_' . $o->client_id, http_build_query($token));
            $c = new \SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token']);
            $ms = $c->home_timeline();
            // done
            $uid_get = $c->get_uid();
            $uid = $uid_get['uid'];
            $user_message = $c->show_user_by_id($uid);
            //根据ID获取用户等基本信息
            //var_dump($user_message);die;
            session("username", $user_message["screen_name"]);
            session("c_img", $user_message["profile_image_url"]);
            echo session('username');
            ?>
			success ,<a href="http://www.sutuijian.com">come on</a> 
			<?php 
        } else {
            ?>
			default。
			<?php 
        }
    }
Ejemplo n.º 27
0
if ($openid) {
    $strOpen = $new['pubs']->find('user_open', array('sitename' => 'weibo', 'openid' => $openid));
    //10天更换一次access_token
    if (time() - 10 * 86400 > $strOpen['uptime']) {
        $new['pubs']->update('user_open', array('sitename' => 'weibo', 'openid' => $openid), array('access_token' => $access_token, 'uptime' => time()));
    }
    if ($strOpen['userid']) {
        $userData = $new['pubs']->find('user_info', array('userid' => $strOpen['userid']), 'userid,username,path,face,isadmin,signin,uptime');
        //更新登录时间
        $new['pubs']->update('user_info', array('userid' => $strOpen['userid']), array('ip' => getIp(), 'uptime' => time()));
        $_SESSION['tsuser'] = $userData;
        header("Location: " . SITE_URL);
        exit;
    } else {
        //获取用户基本资料
        $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $access_token);
        $uid_get = $c->get_uid();
        $uid = $uid_get['uid'];
        $arrUserInfo = $c->show_user_by_id($uid);
        /*	
        Array ( [id] => 2741015883 [idstr] => 2741015883 [class] => 1 [screen_name] => 哥哥很伤心啦 [name] => 哥哥很伤心啦 [province] => 11 [city] => 5 [location] => 北京 朝阳区 [description] => [url] => [profile_image_url] => http://tp4.sinaimg.cn/2741015883/50/5633423902/1 [profile_url] => u/2741015883 [domain] => [weihao] => [gender] => m [followers_count] => 3 [friends_count] => 30 [statuses_count] => 0 [favourites_count] => 0 [created_at] => Thu May 31 17:22:49 +0800 2012 [following] => [allow_all_act_msg] => [geo_enabled] => 1 [verified] => [verified_type] => -1 [remark] => [ptype] => 0 [allow_all_comment] => 1 [avatar_large] => http://tp4.sinaimg.cn/2741015883/180/5633423902/1 [avatar_hd] => http://tp4.sinaimg.cn/2741015883/180/5633423902/1 [verified_reason] => [follow_me] => [online_status] => 0 [bi_followers_count] => 0 [lang] => zh-cn [star] => 0 [mbtype] => 0 [mbrank] => 0 [block_word] => 0 )
        */
        if ($arrUserInfo['screen_name'] == '') {
            tsNotice('登陆失败!请使用Email登陆');
        }
        $salt = md5(rand());
        $pwd = random(5, 0);
        $userid = $new['pubs']->create('user', array('pwd' => md5($salt . $pwd), 'salt' => $salt, 'email' => $openid));
        //插入ts_user_info
        $new['pubs']->create('user_info', array('userid' => $userid, 'username' => $arrUserInfo['screen_name'], 'email' => $openid, 'ip' => getIp(), 'addtime' => time(), 'uptime' => time()));
        //插入ts_user_open
echo '<h3>我在微动力做转发任务产生的mid</h3>';
$sql = "select task_id, repost_mid, task_text from do_task JOIN task using(task_id) where user_id = {$uid} and status = 'finish' and type = 'forward' limit 10";
$sql_res = $dbo->getRs($sql);
$task_weibo_mids = array();
if (0 != count($sql_res)) {
    foreach ($sql_res as $weibo) {
        echo '任务微博 -- ' . $weibo['task_text'] . '。<br />转发产生的mid --  ' . $weibo['repost_mid'] . '</p>';
        $task_weibo_mids[$weibo['task_id']] = $weibo['repost_mid'];
    }
} else {
    echo '<p>我最近没有在微动力上做任务</p>';
}
// 通过api查询当前用户最近转发的微博id
//var_dump($sql_res);
echo '<hr />';
$c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['stoken']);
echo '<h3>用新浪api获取我最近转发的微博mid</h3>';
$repost_weibos = $c->repost_by_me(1, 9, 3430446513991533);
if (!$repost_weibos || 0 === $repost_weibos['total_number']) {
    // 我最近转发的微博都不存在了
    echo '<p>我最近转发的微博全都不在了<sub>或者repost_by_me没有获取到</sub></p>';
    $fail_tasks = $task_weibo_mids;
} else {
    $real_weibo_mids = array();
    foreach ($repost_weibos['reposts'] as $weibo) {
        //echo $weibo['retweeted_status']['mid'].'<br />';
        echo $weibo['mid'] . ' -- ' . $weibo['text'] . ' on <sub>' . $weibo['created_at'] . '</sub><br />';
        $real_weibo_mids[] = $weibo['mid'];
    }
    $fail_tasks = array_diff($task_weibo_mids, $real_weibo_mids);
}
Ejemplo n.º 29
0
<?php

session_start();
include_once '../class/config.php';
include_once '../class/saetv2.ex.class.php';
header("Content-type: text/html; charset=utf-8");
$c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['weibo_token']['access_token']);
//评论功能
if (isset($_POST['pinglunid']) && isset($_POST['neirong'])) {
    $c->send_comment($_POST['pinglunid'], $_POST['neirong']);
}
//转发功能
if (isset($_POST['zhuanfaid']) && isset($_POST['zhuanfa'])) {
    $c->repost($_POST['zhuanfaid'], $_POST['zhuanfa']);
}
$pl = $c->get_comments_by_sid($_POST['weibomid']);
//获取评论列表
$bq = $c->emotions();
//读取表情
?>

<div class="submit_comment">
	<form action="">
		<textarea name="" class="comment_text" cols="30" rows="10"></textarea>
		<div class="comment_button" alt="">评论</div>
	</form>
	
	<div class="comment_biaoqing">
		<span class="comment_biaoqing_trigger"></span>
	</div>
	<div class="comment_biaoqing_floatbox hide">
Ejemplo n.º 30
0
 /**
  * 分享绑定sinaweibo
  */
 public function share_sinaweiboOp()
 {
     //判断系统是否开启站外分享功能
     if (C('share_sinaweibo_isuse') != 1) {
         showMessage(Language::get('sharebind_unused'), 'index.php?act=member_sharemanage', 'html', 'error');
     }
     include_once BASE_DATA_PATH . '/api/snsapi/sinaweibo/callback.php';
     if (!$_SESSION['slast_key']) {
         echo "<script>alert('" . Language::get('sharebind_bind_fail') . "');</script>";
         echo "<script>window.close();</script>";
         exit;
     }
     $update_arr = array();
     $update_arr['snsbind_memberid'] = $_SESSION['member_id'];
     $update_arr['snsbind_membername'] = $_SESSION['member_name'];
     $update_arr['snsbind_appsign'] = 'sinaweibo';
     $update_arr['snsbind_updatetime'] = time();
     $update_arr['snsbind_accesstoken'] = $_SESSION['slast_key']['access_token'];
     $update_arr['snsbind_expiresin'] = $_SESSION['slast_key']['expires_in'];
     $update_arr['snsbind_openid'] = $_SESSION['slast_key']['uid'];
     //获取新浪微博账号信息
     require_once BASE_DATA_PATH . DS . 'api' . DS . 'snsapi' . DS . 'sinaweibo' . DS . 'saetv2.ex.class.php';
     $c = new SaeTClientV2(C('sina_wb_akey'), C('sina_wb_skey'), $_SESSION['slast_key']['access_token']);
     $sinauser_info = $c->show_user_by_id($_SESSION['slast_key']['uid']);
     //根据ID获取用户等基本信息
     $update_arr['snsbind_openinfo'] = $sinauser_info['name'];
     $model = Model();
     $where_arr = array();
     $where_arr['snsbind_memberid'] = $_SESSION['member_id'];
     $where_arr['snsbind_appsign'] = 'sinaweibo';
     //查询该用户是否已经绑定sinaweibo
     $bind_info = $model->table('sns_binding')->where($where_arr)->find();
     if (empty($bind_info)) {
         $result = $model->table('sns_binding')->insert($update_arr);
     } else {
         $result = $model->table('sns_binding')->where($where_arr)->update($update_arr);
     }
     if (!$result) {
         echo "<script>alert('" . Language::get('sharebind_bind_fail') . "');</script>";
     }
     echo "<script>window.close();</script>";
     exit;
 }