PHP原生对接QQ互联/实现QQ登录,SDK2.1版本/超级详细!

在目前在大部分网站中都会接入QQ登录或者微信登录,目前QQ互联的接入门槛是比较低的,官方的前提是必须备案网站!!如果网站没有备案请某宝自行搜索一下其他方法。用QQ登录接口,首先要到QQ互联完善开发者认证信息,并通过审核,然后创建一个网站应用,获得APP ID和APP Key,通过审核后即可调用基本接口get_user_info(获得用户信息),实现QQ登录网站功能。

QQ互联:https://connect.qq.com/

开发文档:https://wiki.connect.qq.com/

1、通过开发者审核,具体怎么申请自行百度了解

image.png

2、添加网站应用,并且通过审核(审核中状态不行)

image.png

网站名称和备案保持一致

image.png

网站地址:此处要填你要实现登录的域名,比如我的网站是http://www.baidu.com那就只能填http://www.baidu.com,填https://www.baidu.com和http://baidu.com都是错的!!

网站回调地址:如果你的网站是原生的,那根据自己的需求填写,如果你是框架或者CMS的请咨询服务商获取!!

image.png

这里在说明一下:首次创建应用的审核中是不可以使用的!!但是在审核通过之后在修改的时候显示的审核中是可以用的!!!

本次示例的信息为

网站地址:http://wind.com/

网站回调地址:http://wind.com/connect.php

3、获取应用的ID和key

5、下载官方SDK

SDK下载(这里演示的是2.1版本)

5、解压文件并整理文件

image.png

(1)首先,把整体文件包放在PHP运行目录下,运行该目录开始设置配置项

image.png

(2)首先,把整体文件包放在PHP运行目录下,运行该目录开始设置配置项。这里注意啦!!!appid和appkey和callback(回调地址)保持高度一致,要一模一样!!回调地址要带协议头,不能填相对路径!!

image.png

(3)开始整理需要的文件(重要)

(3.1)把example\oauth文件夹下的callback.php重命名为connect.php,并放到根目录(回调文件)

(3.2)修改connect.php文件的require_once("../../API/qqConnectAPI.php");修改为require_once("API/qqConnectAPI.php");

(3.3)example\oauth文件夹下的index.php移动到API目录下(调用登录的文件)

(3.4)修改index.php文件的require_once("../../API/qqConnectAPI.php");修改为require_once("qqConnectAPI.php");

(3.5)connect.php文件和API文件夹,删除其他文件和文件夹

6、测试程序是否正常

这里就不放演示了,如果登录成功了会返回一长串的字母+数字

7、根据自己项目修改回调文件(connect.php)

<?php
require_once("API/qqConnectAPI.php");
$qc = new QC();
$acs = $qc->qq_callback();
$oid = $qc->get_openid();
$qc = new QC($acs,$oid);
$arr = $qc->get_user_info();
$sex = $arr["gender"]; //性别
$name = $arr["nickname"]; //姓名

//开始判断是否获取到openid
if(strlen($oid)>=1){
        echo "执行到这里就是登陆成功了,可以写自己的代码了";
}

注意:如果网站接入的话,直接A连接跳转到API文件夹就可以调起QQ登录了!

关于报错:The state does not match. You may be a victim of CSRF. 说明是回调地址有问题。

关于报错:如果第一次登陆成功,第二次失败说明是缓存有问题,ctrl+f5清楚缓存在试试。

关于报错:如果有其他保存请查看官方文档 https://wiki.connect.qq.com/

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
原生 PHP 中,无法直接判断手机是否安装了 QQ。因为 PHP 是一种服务器端编程语言,它无法直接访问客户端的信息。要实现这个功能,可以使用前端技术结合后端 API 接口实现。 具体实现方法如下: 1. 在前端代码中,使用 JavaScript 判断当前设备是否为移动设备,如果是,则显示一个按钮,提示用户点击按钮检测 QQ 是否已安装。 2. 给这个按钮添加点击事件,触发前端 AJAX 请求,向后端 API 接口发送请求。 3. 后端 API 接口接收到请求后,通过 User-Agent 等方式判断当前请求来自移动设备,并将判断结果返回给前端。 4. 前端根据后端返回的结果,显示相应的提示信息。 具体实现代码如下: 前端代码: ``` <html> <head> <meta charset="UTF-8"> <title>判断是否安装QQ</title> </head> <body> <button id="checkQQ">检查是否安装QQ</button> <script> var ua = navigator.userAgent.toLowerCase(); var isMobile = /mobile/i.test(ua); if (isMobile) { // 如果是移动设备,则显示检测按钮 document.getElementById("checkQQ").style.display = "block"; document.getElementById("checkQQ").onclick = function() { // 发送 AJAX 请求到后端 API 接口 var xhr = new XMLHttpRequest(); xhr.open('GET', '/api/check_qq_installed.php', true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { // 根据后端返回的结果,显示相应的提示信息 var result = JSON.parse(xhr.responseText); if (result.installed) { alert("QQ已安装!"); } else { alert("QQ未安装!"); } } }; xhr.send(); }; } </script> </body> </html> ``` 后端 API 接口代码: ``` <?php // 判断是否为移动设备 function isMobile() { $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); $mobileAgents = array( 'iphone', 'ipod', 'ipad', 'android', 'windows phone', 'blackberry', 'mqqbrowser' ); foreach ($mobileAgents as $agent) { if (strpos($userAgent, $agent) !== false) { return true; } } return false; } // 判断是否安装了QQ function isQQInstalled() { $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); if (strpos($userAgent, 'qq/') !== false) { return true; } return false; } // 如果是移动设备,则判断是否安装了QQ,并将结果返回给前端 if (isMobile()) { $result = array('installed' => isQQInstalled()); echo json_encode($result); } ?> ``` 注意:上述代码仅供参考,具体实现需要根据实际情况进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

形影相吊.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值