QQ授权登录
QQ授权登录
需要学习tp5中使用qq登录可以看这篇文章:https://blog.csdn.net/qq_39535807/article/details/103786088
实质:通过地址栏进行传参,获取参数
步骤:
二、申请
学习视频:https://www.imooc.com/video/11006
2.1 申请个人开发者
网址:https://connect.qq.com/manage.html#/

2.2 创建应用
写成网站备案时一样的,审核时间大概是下午1点开始,晚上不审核,完全修改地址需要重新审核,所以要认真检查
2.3 APP ID、APP Key
必须要审核通过后才能正常使用
三、使用
3.1 下载SDK
网址:https://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD
本文使用php,thinkphp5.1
3.2 解读SDK
目录
1. qqConnectAPI.php
在需要使用qq登录的PHP文件里引入包含这个文件,即可使用所有功能
2 qc.calss.php
继承于Oauth,api外部对象,调用接口全部依赖于此对象,通过传入access_token和openi实例化该类后,能通过get_user_info()方法,获取QQ用户的信息
3. Oauth.class.php
该类存在方法 qq_login(), qq_callback(), get_openid(),
在实例化该类后,$oauth = new Oauth();
qq_login( )方法:$oauth->qq_login();使用该方法后,可以跳转到qq登录界面。
注意事项:APPID,APPKEY,回调地址需要正确。
1. 如果没有申请通过的话,会提示网站没有开通功能,
2. 回调地址需要和申请时填写的回调地址一样

qq_callback()方法
应用在回调地址的php文件上,实例化Oauth类使用该方法后,会返回access_token,使用access_token和QQ用户的openid(获取方法如下)才可以可以使用QC类中的get_user_info( )获取QQ用户信息。
get_openid()方法
使用qq_callback()方法后,有了access_token,再使用该方法,通过内部的access_token获取openid,返回 QQ用户的openid,使用access_token和QQ用户的openid(获取方法如下)才可以可以使用QC类中的get_user_info( )获取QQ用户信息。
3.3 实现
目录

此时回调地址需要写为xxx.com/callBack.php
需要先进入index.php进行appid等信息的配置才可以使用

index.php
<?php
require_once 'function.php';
require_once 'Connect2.1/API/qqConnectAPI.php';
?>
<!DOCTYPE html>
<html>
<head>
<title>首页</title>
<meta charset="utf-8">
</head>
<body>
<?php if(!isset($_COOKIE['qq_access_token']) || !isset($_COOKIE['qq_openid'])){ ?>
<a href="./qqlogin.php">QQ登录</a>
<?php }else{ ?>
<a href="./qqlogout.php">退出登录</a>
<?php
$qc = new QC($_COOKIE['qq_access_token'], $_COOKIE['qq_openid']);
$userinfo = $qc->get_user_info();
} ?>
</body>
</html>
qqlogin.php
<?php require_once 'function.php'; require_once 'Connect2.1/API/qqConnectAPI.php'; $oauth = new Oauth(); $oauth->qq_login(); ?>
callBack.php
<?php
require_once 'Connect2.1/API/qqConnectAPI.php';
require_once 'function.php';
$oauth = new Oauth();
$access_token = $oauth->qq_callback();
$openid = $oauth->get_openid();
setcookie('qq_access_token', $access_token, time()+86400);
satcookie("qq_openid", $openid, time()+86400);
header("location:index.php");
?>
qqlogout.php
<?php require_once 'function.php'; require_once 'Connect2.1/API/qqConnectAPI.php'; $oauth = new Oauth(); $oauth->qq_login(); ?>
function.php
用来调试数据
<?php
function debug($val, $dump = false, $exit = true){
if($dump){
$func = 'var_dump';
}else{
$func = (is_array($val) || is_object($val))? 'print_r' : 'printf';
}
header("Content-type: text/html; charset=utf-8");
echo "<pre>debug ouput: <hr/>";
$func($val);
echo "</pre>";
if($exit) exit;
}
?>

浙公网安备 33010602011771号