qq互联 网站接入三方账号

在腾讯 qq互联提交网站,获取appid和appkey。
下载 php sdk,然后按照说明安装。。

1.登录入口:

方式(1)

<a target="_blank" href="/third/index">
    <img src="/static/image/Connect_logo_7.png"></img>
</a>

方式(2)

<script type="text/javascript">
function tologin(){
	var A=window.open(baseurl+"/third/index","TencentLogin","width=450,height=320,menubar=0,scrollbars=1,resizable=1,status=1,titlebar=0,toolbar=0,location=1");
}
</script>

<a> <img  src="/static/image/Connect_logo_7.png"  οnclick="tologin()"/> </a>  


入口文件:(/third/index 运行)

//移动api
require_once Yii::getPathOfAlias('recep')."/extensions/qqconnect/API/qqConnectAPI.php";//api
$qc = new QC();
$qc->qq_login();

2.获取Authorization Code

点击qq登录,回传url,qq说明文档


主要值client_id (应用的appid),redirect_uri(回调的地址)申请应用的时候提交,state(防CSRF攻击)md5的随机码,返回的时候带回,存储在seession或者cache。

yii框架的分布式服务器,session存储在cache的,可以修改api文件,api下的文件$_SESSION['QC_userData']改为Yii::app()->session['QC_userData']

3.通过Authorization Code获取Access Token和openid

回调的url将带着code,third/qqthirdparty?code=9A5F************************06AF&state=test

third/qqthirdparty代码

$qqthirdparty=YiiBase::getPathOfAlias('application.extensions.qqconnect');
require $qqthirdparty.'/API/qqConnectAPI.php';
$qc = new QC();
$access_token=$qc->qq_callback();//获取Access Token
$openid=$qc->get_openid();//通过Access Token获取openid
$qc = new QC($access_token, $openid);//一定要记得再声明一次QC,并赋值$access_token和$openid,防止数据丢失。
$arr = $qc->get_user_info(); //获取qq用户基本信息

这样基本实现了qq三方登录,但是这只完成了api中最重要的步骤,实现网站的三方登录我们还要继续往下。

appid作为用户的唯一的标示,可以存储在数据库中,跟自己网站的用户id对应

third/qqthirdparty代码

$user=UserService::base()->thirdInfo($openid);
		if($user){
			//登录
		}else{
                        //将openid和arr用户数据存cache,cache key=md5($openid),md5($openid)  存cookie                  
                        $id_key=md5($openid);
			$qq_info=array('openid'=>$openid,'arr'=>$arr);
			Yii::app()->cache->set('system_open_'.$id_key,$qq_info);
			$cookie = new CHttpCookie('openid',$id_key);
			$cookie->expire = time()+60*60*24*30;
			Yii::app()->request->cookies['openid']=$cookie;
			$this->redirect(baseCreatUrl($this->createUrl('third/plat')));
		} 
third/plat注册qq用户提供qq用户注册的功能(填写邮箱账号、密码),因为qq不提供用户的邮箱账号,所以网站注册需要邮箱的,需跳转到单独的页面提交。

实现qq用户注册

third/doqqregister

/*get userinfo*/
			$cookie = Yii::app()->request->getCookies();
			if(isset($cookie['openid'])){
			    $openid_key= $cookie['openid']->value;
				$qq_info=Yii::app()->cache->get("system_open_".$openid_key);//cache中获取openid和用户数据
				$openid=$qq_info['openid'];
				
				//注册用户
				//写入openid
				$insert=array('user_id'=>$user['id'],'open_id'=>$openid,'api'=>'tencent');
				$thirdAr=new UserThird();
				$thirdAr->attributes=$insert;
			}
到此实现了qq登录的功能





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值