1 html 中增加链接
<a class="login_weibo" href="http://www.weibo_login.com/WapWeibo/login?referer={$Think.get.referer}">
<img src="/images/meg_04.png" alt="" />
</a>
2 在ThinkPHP中,ThinkPHP-Extend-Vendor放入微博第三方登陆接口
3设置微博登陆配置
<?php
header('Content-Type: text/html; charset=UTF-8');
define( "WB_AKEY" , '182****' );
define( "WB_SKEY" , 'b8e*****' );
define( "WB_CALLBACK_WAPURL" , 'http://www.weibo_login.com/WapWeibo/callback' );//登录成功返回地址
4处理流程
WB_AKEY和WB_SKEY申请微博第三方登陆可以获取
<pre name="code" class="php"><?php
/**
* 微博登录
*
*
*/
class WapWeiboAction extends Action{
/**
* 登录请求
*
*/
public function login(){
//载入API
Vendor('weibo/api');
//获取请求来源链接
$referer=$_GET['referer'];
if(!empty($referer)){
session("weiboLogin_referer",$referer);
}
$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );
$code_url = $o->getAuthorizeURL( WB_CALLBACK_WAPURL );
header('Location:'.$code_url);
}
/**
* 登录成功返回地址
* @author xuxiaojie 2014-12-01
*/
public function callback(){
Vendor('weibo/api');
$o = new SaeTOAuthV2( WB_AKEY , WB_SKEY );
if (isset($_REQUEST['code'])) {
$keys = array();
$keys['code'] = $_REQUEST['code'];
$keys['redirect_uri'] = WB_CALLBACK_WAPURL;
try {
$token = $o->getAccessToken( 'code', $keys ) ;
} catch (OAuthException $e) {
}
}
//验证签名
if ($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 = $_SESSION['token']['uid'];
//$user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息
$nickname=$uid;
$username=$uid;
$userModel = D('User');
$data = array(
'user_name' => $username, //5454099547
'site_id' => '62'
);
$user_id = $userModel->local_login_member($data);
if (!empty($user_id)) { //如果用户存在直接登录
session( C('USER_AUTH_KEY'), $user_id );
session('account',$username);
session('nickname',$nickname);
$session_id = cookie('session_id') ? cookie('session_id') : session_id();
//写入用户登录记录表
$source = 2;
$browser = determinebrowser($_SERVER['HTTP_USER_AGENT']);
$browserAgent = $browser['browseragent'];
$browserVersion = $browser['browserversion'];
$platform = determineplatform($_SERVER['HTTP_USER_AGENT']);
$preData = array(
'user_id' => $user_id,
'account' => $username,
'browserAgent' => $browserAgent,
'browserVersion'=> $browserVersion,
'platform' => $platform,
'ip' => get_client_ip(),
'source' => $source,
'regTime' => time()
);
M('user_login_log')->add($preData);
//购物车修改
$session_id = cookie('session_id') ? cookie('session_id') : session_id();
D('User/Cart')->change_userid($user_id,$session_id);
//登录送10积分
$integral=10;
$userModel->integral_change($user_id, $integral, '登录成功,赠送'.$integral.'积分');
//跳转到来源页面
$referer=session("weiboLogin_referer");
if(empty($referer)){
$this->redirect('/User/index',1);
}else{
header('Location:'.$referer);
}
} else {//如果用户不存在先注册再登录
$ip=get_client_ip() ;
$data = array(
'user_name' => $username,
'password' => md5($username.time()),
'reg_time' => date("Y-m-d H:i:s" ,time()),
'site_id' => '62',
'source' => '2', //注册来源[0:PC, 1:APP, 2:WAP]
'ip' => $ip,
);
$user_id = $userModel->local_add_member($data);
//var_dump($userModel);exit;
if(!empty($user_id)){
session( C('USER_AUTH_KEY'), $user_id );
session('account',$username);
session('nickname',$nickname);
$integral = 50;
$userModel->integral_change($user_id, $integral, '注册成功,赠送'.$integral.'积分');
//购物车修改
$session_id = cookie('session_id') ? cookie('session_id') : session_id();
D('User/Cart')->change_userid($user_id,$session_id);
}
session('verify', null);
//跳转到来源页面
$referer=session("weiboLogin_referer");
if(empty($referer)){
$this->redirect('/User/index',1);
}else{
header('Location:'.$referer);
}
}
} else {
echo("授权失败");
header('Location:'.$referer);
}
}
}
?>