qq互联 网站接入三方账号

来源:互联网 发布:php世界上最好的语言梗 编辑:程序博客网 时间:2024/04/27 16:12
在腾讯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"  onclick="tologin()"/> </a>  

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

//移动apirequire_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 0
原创粉丝点击