一、在QQ互联上注册成为开发者
注册指南地址: http://wiki.connect.qq.com/%E6%88%90%E4%B8%BA%E5%BC%80%E5%8F%91%E8%80%85

二、创建应用,获取APP ID和APP Key
创建应用指南地址:http://wiki.connect.qq.com/__trashed-2
1、进入QQ互联后台创建网站应用
https://connect.qq.com/manage.html#/

2、网站基本信息
此处主要填写网站名字、选择网站类别、网站简介、以及上传网站的log图片

3、平台信息
网站地址:请填写可访问的域名,不能是IP地址
网站回调域:请填写可访问的域名,不能是IP地址
主办单位以及网站备案号

注:请注意网站回调域,这个地址需要对应到后面SDK配置回调地址的域匹配

三、下载对应SDK
我这里使用PHP SDK,下载地址: http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD

下载完SDK,需要使用SDK提供的网页配置参数,如下截图说明:

假设APP ID:123456789
假设APP Key:abcdefghl
假设第二步中申请的网站回调域为 www.testqqlogin.com,
那么回调可以设置为:http://www.testqqlogin.com/?r=member/qqcallback
ps:
1、重点关注第二步中回调域的设置,需要设置为域名形式,如www.xxx.com,test.yyy.com等,而非www.aaaa.com/test.php
2、同样,重点关注SDK配置回调设置,前面域名必须和QQ互联回调域设置一致,比如:
假如回调域设置为:www.testqqlogin.com
那么SDK回调必须设置为 http://www.testqqlogin.com/oauth/callback.php 或者 http://www.testqqlogin.com/?r=member/qqcallback

但是,不能把SDK回调域设置为以下
http://www.testqqlogin.com/index.php?r=member/qqcallback

当完成以上配置之后,它会自动在SDK目录下的API\comm生成一个名为inc.php的配置文件,开发人员只需要把SDK中的API这个目录提取到自己的项目中即可

四、代码配置

4.1、前端网页QQ三方登录按钮(按钮ID为login_qq)事件配置

<script>$(document).ready(function () {$('#login_qq').click(function () {window.location.href = "<?=\yii\helpers\Url::to(['member/qqlogin'])?>";
//                window.open("<?//=\yii\helpers\Url::to(['member/qqlogin'])?>//","TencentLogin","width=800,height=600,menubar=0,scrollbars=1,resizable=1,status=1,titlebar=0,toolbar=0,location=1");});});</script>

4.2、PHP后端处理代码,处理前端QQ三方登录按钮

/*** 跳转QQ登录页面*/
public function actionQqlogin(){require_once ("../vendor/qqlogin/qqConnectAPI.php");$qc = new \QC();$qc->qq_login();
}

4.3、QQ登录成功,回调

/*** 处理QQ登录之后QQ服务器的回调callback*/
public function actionQqcallback(){require_once ('../vendor/qqlogin/qqConnectAPI.php');//获取登录QQ的信息$auth = new \OAuth();$access_token = $auth->qq_callback();$openid = $auth->get_openid();$qc = new \QC($access_token, $openid);$userInfo = $qc->get_user_info();//获取用户信息数组,包括昵称,头像等//写session$session = \Yii::$app->session;$session['userinfo'] = $userInfo;$session['openid'] = $openid;//QQ登录前,判断QQ对应用户是否已经在数据库中,否则先插入数据库,并跳到actionQqreg这个函数执行$model = new User();if(!$model->findQqUser($openid)){//没找到,先注册return $this->redirect(['member/qqreg']);}//QQ登录if($model->qqlogin()){return $this->redirect(['/']);}else{\Yii::$app->session->setFlash('thirdparty_info', '登录失败');return $this->render('auth',['model'=>$model]);}
}

4.4、处理回调中的QQ第一次登录,需要写入数据库

/*** QQ注册,写入数据库*/
public function actionQqreg(){$this->layout = 'layout_second';$model = new User();if(\Yii::$app->request->isPost){$model->scenario = User::SCENARIO_REG_QQ;//组装$post = \Yii::$app->request->post();$post['User']['openid'] = \Yii::$app->session['openid'];if($model->load($post) && $model->validate()){//QQ用户添加if($model->regQqUser() !== false){//QQ登录if($model->qqlogin()){return $this->redirect(['/']);}else{\Yii::$app->session->setFlash('info', '注册失败');}}else{\Yii::$app->session->setFlash('info', '注册失败');}$model->userpass = '';$model->useremail = '';$model->repass = '';}}return $this->render('qqreg', ['model'=>$model]);
}

五、问题

5.1、点击qq登录按钮,但页面却是一片空白,这是什么原因呢

这是QQ插件的问题,需要调整其SDK源码qq_login函数,把header改为js方式跳转,如下

//header("Location:$login_url");
echo "<script>window.location.href='$login_url'</script>";

六、总结

PHP集成QQ网页登录功能,整体上都很简单。主要花费的时间在回调域和回调地址设置上,这导致我花了很长时间去调整,这和之前集成支付宝支付很类似,同样在回调地址的设置出错,导致整体集成进度延后。这也是我为什么在第三步中详细描述设置的原因,希望能帮助到集成QQ网页登录的同学

PHP QQ网页三方登录相关推荐

  1. php 微信第三方登录demo,第三方登录 - 快速接入微信、QQ、微博等第三方登录方式 – 基于ThinkPHP和Bootstrap的极速后台开发框架...

    此插件基于FastAdmin和Thinkphp5开发的第三方登录插件,可用于对接微.微博.QQ等第三方登录,目前CMS中的小程序账号登录绑定就是基于此插件开发,在使用CMS中的小程序登录功能之前请务必 ...

  2. 企业微信三方开发(三):网页授权登录

    其他链接 初识微信开发 企业微信三方开发:注册企业微信服务商 企业微信三方开发(一):回调验证及重要参数获取 企业微信三方开发(二):获取access_token 企业微信三方开发(三):网页授权登录 ...

  3. QQ三方登录创建网站应用审核不通过原因

    QQ三方登录创建网站应用踩过的坑 创建网站应用之前在QQ互联官网进行开发者认证:QQ互联 1.确保网站能够打开 如果网站无法正确打开或者过于简陋会出现错误:网站无法打开 2.确保按钮正确放置 必须按照 ...

  4. Android接入三方登录——QQ、微信、Facebook、Twitter

    Android接入三方登录--QQ.微信.Facebook.Twitter 避坑指南 facebook错误1: facebook错误2: QQ 微信 Facebook Twitter 补充: 避坑指南 ...

  5. php qq授权_PHP模拟QQ网页版授权登录的案例

    PHP模拟QQ网页版授权登录的案例 发布时间:2020-10-31 01:28:09 来源:亿速云 阅读:78 作者:小新 PHP模拟QQ网页版授权登录的案例?这个问题可能是我们日常学习或工作经常见到 ...

  6. QQ微信可以登录但打不开网页

    QQ微信可以登录但打不开网页 方法1. 修改DNS地址 方法2. 关闭科学上网 又碰到这个垃圾问题... 来给自己MARK一下! 方法1. 修改DNS地址 这是网上常见的修改步骤,可以查到很多教程. ...

  7. QQ三方登录之资料审核

    QQ三方登录之资料审核 1.首先打开网址https://connect.qq.com/index.html 2.点击应用管理进行登录 3.点击自己的QQ昵称进行验证(注意,这里有点坑,不是点击出来的弹 ...

  8. 微信|QQ扫码登录网页版二维码失效问题解决方案 网站无法访问PC网页版如何解决 安卓软件历史版本下载 FV fooview悬浮球帮助教程

    前言 1. 手机端浏览器登录网页的同时再用微信或者QQ扫码登录出现二维码失效问题如何解决? 2.部分网站无法访问PC网页版如何解决?请看方案 目录 前言 1.方案 2.方案 使用Edge安卓浏览器访问 ...

  9. Android 三方登录 - QQ登录

    由于项目需要三方登录,所以根据官方文档和一些其他资料,完成了一个Demo,这里记录一下. (1)申请腾讯开发者账号 到腾讯开发这平台(http://open.qq.com/)注册账号,很简单的. (2 ...

  10. 安卓三方登录趟坑,QQ,微信,微博,Twitter,Facebook,Instagram

    前言 最近给app加入三方登录,由于比较多,所以就用的友盟统一登录,会比一个一个配置方便点 正文 先说QQ,微信,微博: 国内QQ,微信,微博三方登录其实还行,并没有太多坑,文档也挺完善的. 但是需要 ...

最新文章

  1. Appium 移动端自动化 - Android SDK的安装与配置,使用安卓SDK连接手机实例演示
  2. 国庆6.37亿出游花费4665.6亿处于什么水平?哪个省市客流最大?收入最高?
  3. OrchardCore实现模块化核心原理分析
  4. 机器学习基础—Kaggle泰坦尼克预测(完整分析)
  5. grep -e命令详解_grep中的正则表达式
  6. 子查询 不同情况 mysql
  7. oracle JOB 查询 添加 修改 删除
  8. 用python画分形树的详细解析_基于Python的matplotlib库绘制分形树
  9. python mac地址 js_使用Python从设备获取MAC地址
  10. sublime text常用快捷键整理
  11. 关于显式量化和隐式量化的英文对照
  12. 谷歌大牛Jeff Dean撰文:深度学习研究的黄金十年
  13. 谷歌地图高清卫星地图
  14. Java程序员职业发展规划和方向有哪些?
  15. 开发人员该选择什么大数据工具提高工作效率?
  16. 电脑游戏计算机哪年发明的,电子计算机发明于哪一年
  17. 仿某App锁屏页Gallery
  18. Linux 系统Trouble shouting及修复FATAL: NO bootale medium found! System halted
  19. PTA习题4-11 兔子繁衍问题 (15 分)-好容易入坑
  20. 场内场外交易成本_2分钟搞懂场内场外基金

热门文章

  1. 软件测试运维工程师面试题,运维工程师笔试题目
  2. 嵌入式中的人工神经网络
  3. UEFI规范实现EDKII项目学习笔记绪论[0]
  4. YUV和RGB调节色彩公式
  5. 撼龙图怎么开鸿蒙炁灵,《一人之下》藏金图怎么玩 撼龙藏金图高概率出绝世炁灵技巧...
  6. 分享几个实用的破解软件
  7. 盘盘在项目中你常用的那些数组API
  8. 几种微弱信号处理电路
  9. 事件同时发生的相对性——思想实验推导狭义相对论(三)
  10. 计算机如何引用表格,(Excel如何实现跨文件表引用数据)excel引用其他表格数据路径...