PHP QQ网页三方登录

news/2024/11/15 16:23:58/
一、在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网页登录的同学微笑






http://www.ppmy.cn/news/699401.html

相关文章

网站接入QQ登录最新2020 java版本

1.首先先注册账号,然后填资料审核,等个三四天吧大概 https://connect.qq.com/ 2.审核通过后点击创建应用,把备案号什么的都填(这个审核两天之内一般) !!! 这里有个重点,网站地址只能填一下,回调地址随便填一个,通过后可以随便改的 3. 整理java代码 我的是springBoot项目 先导入…

qq快捷登陆 php代码,qq互联--qq快捷登陆

1、介绍 QQ登录接口。作用是实现QQ直接登录某些网站&#xff0c;简化用户登录、注册流程。 现在有很多大型网站都在使用QQ互联登录功能&#xff1a; X东&#xff1a; X宁&#xff1a; X美&#xff1a; 2、签约 ①点击“应用管理” image.png ②如果资料没有审核通过的话&#x…

python打开qq并登录_python爬虫入门之qq登陆初探

不得不承认:这篇文章的方法有些小猥琐。 作为一个非专业人士,qq登陆这件事困扰我很长时间。在没有头绪满头乱撞的时候,无意间我发现了一件大杀器:splinter!!!这个python的第三方库会操纵你的浏览器(默认是火狐),打开页面,与网页进行交互。妈妈再也不用担心什么加密什么…

Python+Selenium-4:模拟用户登录QQ网页版

PythonSelenium-4&#xff1a;模拟用户登录QQ网页版 ​ QQ网站 : 点击直达 需求&#xff1a;点击右上角登录&#xff0c;再使用密码登录QQ 代码实例 from selenium import webdriver # 导入webdriver模块 from selenium.webdriver.common.by import By # 导入By模块 impor…

PC端 微信登陆 + qq登录

目录 1. 微信登录 2. QQ登录 1. 微信登录 官方文档地址&#xff1a;网页授权 | 微信开放文档 点击微信登录触发事件后&#xff0c;会跳转到微信授权页面&#xff0c;授权成功后页面自动跳转到回调地址页面&#xff0c;需在微信公众平台配置地址 // 微信登录wxLogin() {let…

html+css 制作简单QQ登录页面

HTMLcss制作简单QQ登录页面 这是效果图 这是HTML源码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewpor…

实现qq一键登录

在实现acwing一键登录的基础上实现qq一键登录 acwing题解地址 需项目在自己的备案域名上运行 我实现好的网站地址&#xff1a; http://game.ilotus.top 1、前往qq互联进行开发者资料审核 https://connect.qq.com/devuser.html#/create/1/ 选择个人接入后填入个人信息 注&am…

html登录qq页面无法显示,仿手机QQ网页登陆页面

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼QQ安全登录 #qj{width:360px;height:600px;} div#tb{width:360px;;height:40px;background-color:#0083c5;} .tba{width:45px;height:38px;background-color:#0083c5;display:-moz-inline-box;position:relative;bottom:-2px;margi…