//第三方登录 ----QQ号码登录
// 1> 前置条件: QQ号码 + 公网通过域名可以访问的web服务器(网站根目录具有读写权限) 服务器运行环境
// 2> 申请AppID 与 APPKey QQ互联 :http://connect.qq.com
// 3> 创建注册 : 网站地址:公网可访问的域名 回调地址: 网站首页 -> 复制 meta标签
// 4> 开始验证->创建应用 App ID: dfhshdfjkvj12123 App Key : njdfhjdgfgjkhdjkgh453sd4f54d5gdr
//1 callback.php
<?php
// echo $_GET['code'];
$oauth = new Oauth();
$accessToken = $oauth -> qq_callback();
$openId = $oauth->get_openid();
setcookie('qq_caaessToken',$accessToken,time()+86400);
setcookie('qq_openid',$openId,time()+86400);
header('Location: index.php');
?>
// 2. 引入官方SDK 从开方平台的文档中心下载SDK qqConnect_Server_SDK-php_v2.1.zip
// SDK解读: 文档资料 -> oauth开发指引 -> 开发攻略 _Server_side (服务端)
// SDK 核心类与方法 :
// 登录授权的三个主要类 *.class.php
// Recorder.class.php[配置读写与SESSION存取]
~ __construct()
$incFileContents = file(ROOT,'comm/inc.php');读入配置文件json字符串
$incFileContents = $incFileCotents[1];
$this->inc = json_decode($incFileContents); 解析成php对象
~ readInc($name)
return $this->inc->$name;
->readInc('appid') 读取配置文件中的AppID
// URL.class.php [基于curl库的get与POST请求]
~ conbineURL($baseURL,$keysArr);
$conbined = $baseURL. '?'; 拼接?
foreach($keysArr as $key=>$val) $valueArr[] = '$key=$val';拼接参数
$keyStr = implode("&",$valueArr); 使用&拼接参数键值对
生成形如:http:// xxx.com?a=b&c=d...的链接
get($url,$keyArr) ; 发送get请求
post($url,$keyArr,$flag = 0);发送POST请求
// Oauth.class.php [Oauth相关的URL动态拼接与token请求]
qq_login ; 拼接QQ登录页面URl
$appid = $this->record->readInc('appid'); 读取AppID
$callback = $this->record->readInc('callback'); 读取回调地址
$scope = $this->record->readInc('scope'); 读取授权列表
// ..........生成唯一随机字符串防CSRF攻击
$state = MD5(uniqid(rand(),TURE)); 原样返回参数
$this->recorrd->write('state',$state); state写入SESSION中
$ketArr = array(
'response_type' => 'code',
'client_id' => $appid,
'redirect_url' => $callback,
'scope' => $scope,
'state' => $state,
);
// index.php