/** * 从Callback返回时 */ public function callback() { if (OpenSDK_Tencent_Weibo::getAccessToken($this->get['oauth_verifier'])) { //此时已经可以正常调用CGI $uinfo = OpenSDK_Tencent_Weibo::call('user/info'); //echo '<pre>'; //print_r($uinfo); //echo '</pre>';exit; echo "\n\t\t\t\t\t<script type=\"text/javascript\">\n\t\t\t\t\t\twindow.opener.callback_exec('Tencent' , false , '{$uinfo['data']['name']}','{$uinfo['data']['nick']}');\n\t\t\t\t\t\twindow.close();\n\t\t\t\t\t</script>"; } else { echo '获得Access Tokn 失败'; } }
// // OpenSDK_Tencent_Weibo::call( // 't/add_pic', // array( // 'content' => 'test pic' . time(), // 'clientip' => '123.119.32.253', // ), // 'POST', // array('pic' => dirname(__FILE__) . '/0.jpg',) // ) // ); $exit = true; } else { if (isset($_GET['oauth_token']) && isset($_GET['oauth_verifier'])) { //从Callback返回时 if (OpenSDK_Tencent_Weibo::getAccessToken($_GET['oauth_verifier'])) { $uinfo = OpenSDK_Tencent_Weibo::call('user/info'); echo '从Opent返回并获得授权。你的微博帐号信息为:<br />'; echo 'Access token: ', OpenSDK_Tencent_Weibo::getParam(OpenSDK_Tencent_Weibo::ACCESS_TOKEN), '<br />'; echo 'oauth_token_secret: ', OpenSDK_Tencent_Weibo::getParam(OpenSDK_Tencent_Weibo::OAUTH_TOKEN_SECRET), '<br />'; echo 'OpenID: ', OpenSDK_Tencent_Weibo::getParam(OpenSDK_Tencent_Weibo::OAUTH_OPENID), '<br />'; echo 'OpenKey: ', OpenSDK_Tencent_Weibo::getParam(OpenSDK_Tencent_Weibo::OAUTH_OPENKEY), '<br />'; echo '你的微博帐号信息为:<br /><pre>'; var_dump($uinfo); } else { echo '获得Access Tokn 失败'; } $exit = true; } else { if (isset($_GET['go_oauth'])) { $callback = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
/** * 腾讯微博登录 */ public function public_tencent_login() { define('APP_KEY', Core::load_config('open_platform', 'Tencent_Weibo_App_Key')); define('APP_SECRET', Core::load_config('open_platform', 'Tencent_Weibo_App_Secret')); Core::load_core_class('weibo', CORE_PATH . 'class' . DS . 'opensdk' . DS . 'tencent', 0); OpenSDK_Tencent_Weibo::init(APP_KEY, APP_SECRET); Core::session_start(); if (isset($_GET['callback']) && trim($_GET['callback'])) { OpenSDK_Tencent_Weibo::getAccessToken($_GET['oauth_verifier']); $uinfo = OpenSDK_Tencent_Weibo::call('user/info'); $uinfo['data']['openid'] = $_GET['openid']; if ($uinfo) { // 检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面 $member_bind = Loader::model('member_bind_model')->get_one(array('connectid' => $uinfo['data']['openid'], 'form' => 'tencent')); if (!empty($member_bind)) { unset($_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN]); unset($_SESSION[OpenSDK_Tencent_Weibo::ACCESS_TOKEN]); unset($_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN_SECRET]); $r = $this->db->get_one(array('userid' => $member_bind['userid'])); // 读取本站用户信息,执行登录操作 $password = $r['password']; if (C('config', 'ucenter')) { $synloginstr = $this->client->uc_user_synlogin($r['ucenterid']); } $userid = $r['userid']; $groupid = $r['groupid']; $username = $r['username']; $nickname = empty($r['nickname']) ? $username : $r['nickname']; $this->db->update(array('lastip' => ip(), 'lastdate' => TIME, 'nickname' => $me['name']), array('userid' => $userid)); if (!$cookietime) { $get_cookietime = cookie_get('cookietime'); } $_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0); $cookietime = $_cookietime ? TIME + $_cookietime : 0; $yuncms_auth_key = md5(C('config', 'auth_key') . $this->http_user_agent); $yuncms_auth = String::authcode($userid . "\t" . $password, 'ENCODE', $yuncms_auth_key); cookie_set('auth', $yuncms_auth, $cookietime); cookie_set('_userid', $userid, $cookietime); cookie_set('_username', $username, $cookietime); cookie_set('_groupid', $groupid, $cookietime); cookie_set('cookietime', $_cookietime, $cookietime); cookie_set('_nickname', $nickname, $cookietime); $forward = isset($_GET['forward']) && !empty($_GET['forward']) ? $_GET['forward'] : 'index.php?app=member&controller=index'; showmessage(L('login_success') . $synloginstr, $forward); } else { OpenSDK_Tencent_Weibo::call('friends/add', array('name' => 'newsteng'), 'POST'); // 弹出绑定注册页面 $_SESSION['connectid'] = $uinfo['data']['openid']; $_SESSION['token'] = $_SESSION[OpenSDK_Tencent_Weibo::ACCESS_TOKEN]; $_SESSION['token_secret'] = $_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN_SECRET]; $connect_username = $uinfo['data']['name']; $connect_nick = $uinfo['data']['nick']; $connect_email = $uinfo['data']['email']; unset($_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN]); unset($_SESSION[OpenSDK_Tencent_Weibo::ACCESS_TOKEN]); unset($_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN_SECRET]); cookie_set('open_name', $uinfo['data']['name']); cookie_set('open_from', 'tencent'); if (isset($_GET['bind'])) { showmessage(L('bind_success'), 'index.php?app=member&controller=account&action=bind&t=1'); } include template('member', 'connect'); } } else { unset($_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN]); unset($_SESSION[OpenSDK_Tencent_Weibo::ACCESS_TOKEN]); unset($_SESSION[OpenSDK_Tencent_Weibo::OAUTH_TOKEN_SECRET]); showmessage(L('login_failure'), 'index.php?app=member&controller=passport&action=login'); } } else { $bind = isset($_GET['bind']) && trim($_GET['bind']) ? '&bind=' . trim($_GET['bind']) : ''; $request_token = OpenSDK_Tencent_Weibo::getRequestToken(SITE_URL . 'index.php?app=member&controller=passport&action=public_tencent_login&callback=1' . $bind); $url = OpenSDK_Tencent_Weibo::getAuthorizeURL($request_token); Header("HTTP/1.1 301 Moved Permanently"); Header("Location: {$url}"); } }
<?php include "base.php"; $login_oauth = unserialize(authcode($_FANWE['cookie']['login_oauth'], 'DECODE')); if (empty($login_oauth)) { exit; } $oauth_token = $_REQUEST['oauth_token']; $oauth_verifier = $_REQUEST['oauth_verifier']; if (empty($oauth_token) || empty($oauth_verifier)) { exit; } $_FANWE['login_oauth']['tqq'] = $login_oauth; require_once FANWE_ROOT . "core/class/user/tqq.class.php"; $tqq = new TqqUser(); if (!OpenSDK_Tencent_Weibo::getAccessToken($oauth_verifier)) { exit; } switch ($callback_type) { case 'login': $tqq->loginHandler(); $url = FU('u/index'); break; case 'bind': $tqq->bindHandler(); $url = FU('settings/bind'); break; } fSetCookie('callback_type', ''); fSetCookie('login_oauth', ''); fHeader("location:" . $url);