在腾讯 qq互联提交网站,获取appid和appkey。admin管理员组文章数量:1566224
下载 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登录的功能
版权声明:本文标题:qq互联 网站接入三方账号 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1726721444a1081874.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论