/** * 新浪微博登录 */ public function public_sina_login() { $config = C('sns', 'qq'); OpenSDK_Sina_Weibo2::init($config['app_key'], $config['app_secret']); Loader::session(); if (isset($_GET['callback']) && trim($_GET['callback'])) { $o = new WeiboOAuth(WB_AKEY, WB_SKEY, $_SESSION['keys']['oauth_token'], $_SESSION['keys']['oauth_token_secret']); $access_token = $o->getAccessToken($_REQUEST['oauth_verifier']); $c = new WeiboClient(WB_AKEY, WB_SKEY, $access_token['oauth_token'], $access_token['oauth_token_secret']); // 获取用户信息 $me = $c->verify_credentials(); if (CHARSET != 'utf-8') { $me['name'] = iconv('utf-8', CHARSET, $me['name']); $me['screen_name'] = iconv('utf-8', CHARSET, $me['screen_name']); $me['description'] = iconv('utf-8', CHARSET, $me['description']); } if (!empty($me['id'])) { // 检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面 $member_bind = Loader::model('member_bind_model')->get_one(array('connectid' => $me['id'], 'form' => 'sina')); if (!empty($member_bind)) { // connect用户已经绑定本站用户 $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('auth', $yuncms_auth, $cookietime); cookie('_userid', $userid, $cookietime); cookie('_username', $username, $cookietime); cookie('_groupid', $groupid, $cookietime); cookie('cookietime', $_cookietime, $cookietime); cookie('_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 { $c->follow(1768419780); unset($_SESSION['keys']); // 弹出绑定注册页面 $_SESSION['connectid'] = $me['id']; $_SESSION['token'] = $access_token['oauth_token']; $_SESSION['token_secret'] = $access_token['oauth_token_secret']; $connect_username = $me['name']; $connect_nick = $me['screen_name']; unset($_SESSION['last_key']); cookie('open_name', $me['name']); cookie('open_from', 'sina'); 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['keys'], $_SESSION['last_key']); showmessage(L('login_failure'), 'index.php?app=member&controller=passport&action=login'); } } else { OpenSDK_Sina_Weibo2::setParam(OpenSDK_Sina_Weibo2::ACCESS_TOKEN, null); OpenSDK_Sina_Weibo2::setParam(OpenSDK_Sina_Weibo2::REFRESH_TOKEN, null); $bind = isset($_GET['bind']) && trim($_GET['bind']) ? '&bind=' . trim($_GET['bind']) : ''; $url = OpenSDK_Sina_Weibo2::getAuthorizeURL(SITE_URL . 'index.php?app=member&controller=passport&action=public_sina_login&callback=1' . $bind, 'code', 'state'); Header("HTTP/1.1 301 Moved Permanently"); Header('Location: ' . $url); } }
* * 仅仅是个demo,未有严格考虑,请不要使用这个简单逻辑到生产环境。 * */ //设置include_path 到 OpenSDK目录 set_include_path(dirname(dirname(dirname(__FILE__))) . '/lib/'); require_once 'OpenSDK/Sina/Weibo2.php'; include '../sinaappkey.php'; OpenSDK_Sina_Weibo2::init($appkey, $appsecret); //打开session session_start(); header('Content-Type: text/html; charset=utf-8'); $exit = false; if (isset($_GET['exit'])) { OpenSDK_Sina_Weibo2::setParam(OpenSDK_Sina_Weibo2::ACCESS_TOKEN, null); OpenSDK_Sina_Weibo2::setParam(OpenSDK_Sina_Weibo2::REFRESH_TOKEN, null); echo '<a href="?go_oauth">点击去授权</a>'; } else { if (OpenSDK_Sina_Weibo2::getParam(OpenSDK_Sina_Weibo2::ACCESS_TOKEN)) { //已经取得授权 $uinfo = OpenSDK_Sina_Weibo2::call('users/show', array('uid' => OpenSDK_Sina_Weibo2::getParam(OpenSDK_Sina_Weibo2::OAUTH_USER_ID))); echo '你已经获得授权。你的授权信息:<br />'; echo 'Access token: ', OpenSDK_Sina_Weibo2::getParam(OpenSDK_Sina_Weibo2::ACCESS_TOKEN), '<br />'; echo 'Refresh token: ', OpenSDK_Sina_Weibo2::getParam(OpenSDK_Sina_Weibo2::REFRESH_TOKEN), '<br />'; echo 'Expire in:', OpenSDK_Sina_Weibo2::getParam(OpenSDK_Sina_Weibo2::EXPIRES_IN), '<br />'; echo 'Uid:', OpenSDK_Sina_Weibo2::getParam(OpenSDK_Sina_Weibo2::OAUTH_USER_ID), '<br />'; echo '你的微博帐号信息为:<br /><pre>'; var_dump($uinfo); /** * 上传一张图片,并发微博 */