2020-11-01 / 2187阅
本课程讲解如何实现QQ登录,为了方便学习,不做任何伪静态和重定向操作。
你在申请QQ互联时会填写一个回调地址,我们与最简单的方式来操作,在网站跟新建一个connect.php文件。
在这个文件里面写上任意内容,访问 你的域名/connect.php文件,确保文件可以打开。
新建的connect.php文件是孤立的,默认情况下他不具备WordPress的任何功能。
我们在这个文件中引入 wp-load.php文件文件,加载WordPress功能。
session_start();
date_default_timezone_set('PRC');
include('wp-load.php');
$id = '101****07';
$key = '1c0de3b0**********8957248';
同时我们设置开启SEESSION功能,第二设置时区为中国,并且定义了QQ互联的id和key。引入了wp-load.php以后,你就可以在这个文件中使用是有wordpress函数和功能。
//第一步,换取code
function youran_get_code(){
echo '开始获取CODE<br/>';
if($_GET['code']){
//echo 'CODE已经存在<br/>';
return $_GET['code'];
}else {
//echo 'CODE不存在<br/>';
global $id;
$url = urlencode('https://youranzixue.cn/connect.php');
$sup = '2020';
wp_redirect( 'https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=' . $id . '&redirect_uri=' . $url . '&state=' . $sup);
}
}
上面的函数会判断当前网址是否携带code,如果没有code,则自动去请求code。
redirect_uri参数是回调地址,填错了就收不到code,state参数可以作为你需要传递的内容,它会被原样返回给你。
function youran_get_new_token(){
global $id, $key;
$code = youran_get_code();
$url = 'https://graph.qq.com/oauth2.0/token?grant_type=authorization_code&client_id=' . $id . '&client_secret=' . $key . '&code=' . $code . '&redirect_uri=' . urlencode('https://youranzixue.cn/connect.php');
$content = wp_remote_get($url);
if ($content) {
if (strpos($content['body'], 'access_token') !== false) {
return youran_content($content['body']);
} else {
return false;
}
} else {
return false;
}
}
有了code,我们就可以拿着code去换token了。拿到正文以后,不是json格式的【备注拿取的姿势不对,下午在更新代码】,我们需要用下面的函数稍微处理下。
//整理和存储token
function youran_content($content){
$info = explode("&", $content);
$qq = array();
foreach ($info as $v) {
$body = explode("=", $v);
$qq[$body[0]] = $body[1];
}
return $qq;
}
阅读文章或者观看视频过程中有任何问题,请下方留言或者联系我Q248758228