ThinkPHP微博第三方登陆

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);
		
		}
		
	}
}
?>


 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
THINKPHP最全第三方登录(包括腾讯QQ、微信、新浪微博、Github、淘宝网、百度、搜狐微博、人人、360、网易等等) 使用方式: 1、使用命名空间 use Org\ThinkSDK\ThinkOauth; 2、设置三方登录的类别并赋予一个变量 $type = ThinkOauth::getInstance('qq'); 3、设置配置文件 'THINK_SDK_(TYPE)' => array( 'APP_KEY' => '', //应用注册成功后分配的 APP ID 'APP_SECRET' => '', //应用注册成功后分配的KEY 'CALLBACK' => '', //注册应用填写的callback ), 上文中的(TYPE)为设置的类别,其值目前有以下几个: //腾讯QQ登录配置 THINK_SDK_QQ // 用户基本信息API接口 user/get_user_info //腾讯微博配置 THINK_SDK_TENCENT // 用户基本信息API接口 user/info //新浪微博配 THINK_SDK_SINA // 用户基本信息API接口 users/show。附加参数:'uid='.$obj->openid() //网易微博配置 THINK_SDK_T163 // 用户基本信息API接口 users/show //人人网配置 THINK_SDK_RENREN // 用户基本信息API接口 users.getInfo //360配置 THINK_SDK_X360 // 用户基本信息API接口 user/me //豆瓣配置 THINK_SDK_DOUBAN // 用户基本信息API接口 user/~me //Github配置 THINK_SDK_GITHUB // 用户基本信息API接口 user //Google配置 THINK_SDK_GOOGLE // 用户基本信息API接口 userinfo //MSN配置 THINK_SDK_MSN // 用户基本信息API接口 msn。附加参数:token //点点配置 THINK_SDK_DIANDIAN // 用户基本信息API接口 user/info //淘宝网配置 THINK_SDK_TAOBAO // 用户基本信息API接口 taobao.user.buyer.get。附加参数:'fields=user_id,nick,sex,buyer_credit,avatar,has_shop,vip_info' //百度配置 THINK_SDK_BAIDU // 用户基本信息API接口 passport/users/getLoggedInUser // 注意,百度的头像位置是http://tb.himg.baidu.com/sys/portrait/item/{$data['portrait']} //开心网配置 THINK_SDK_KAIXIN // 用户基本信息API接口 users/me //搜狐微博配置 THINK_SDK_SOHU // 用户基本信息API接口 i/prv/1/user/get-basic-info 4、实例化一个登录页面 redirect($type->getRequestCodeURL()); 这里的$type是第二部获取的结果 5、回调页面 $code = $this->get('code'); $type = 'QQ'; $sns = ThinkOauth::getInstance($type); //腾讯微博需传递的额外参数 $extend = null; if($type == 'tencent'){ $extend = array('openid' => $this->_get('openid'), 'openkey' => $this->_get('openkey')); } //请妥善保管这里获取到的Tok

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值