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; } ?>