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

?>

 

posted @ 2020-04-12 16:14  明月复苏  阅读(955)  评论(0编辑  收藏  举报
不见了