整合实例PHP说明文档
现在我们以PHP语言为例,来做一个授权验证实例。通过该实例,让您可以熟悉授权过程和原理。
<?php
//第一步
//我们先定义一个变量,用来存放授权码。这里为了演示,我们直接将这个变量放在同一页。
//实际应用中,可以将该变量放在数据库配置页或其实公共页,以便全局调用读取。
$AUTH_KEY="NiuDuancom";
//第二步
//我们封装一个GET请求函数,以便我们读取API接口。这里使用PHP的CURL功能。
//封装的函数名为httpGet(),括号里面传入我们授权服务器的API接口地址
function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
//第三步
//通过httpGet()函数,来进行GET请求API接口,以便获取授权数据。
//此处API请求接口地址为我们的演示,实际操作请替换成您安装易运维的网址
//API接口最后的=号后面是前面我们定义的授权码变量。
$url="http://域名/index.php/Api/auth/index.html?authid=".$AUTH_KEY;
$authdata=httpGet($url);//将httpGet函数请求返回的数据赋值给$authdata变量
$authdata=json_decode($authdata,true);//将$authdata中的JSON数据转换成PHP的数组
/*通过以上操作,我们就得到了一个名为$authdata的数组
数组中的参数上节课我们已经有列出。
下面我们就来通过PHP逻辑,判断授权。
*/
//第四步
//判断并验证授权
//下面是做了一个授权码是否正确的判断。如果不正确,则输出相关提示,并终止程序运行。
if($authdata['authid']!=$AUTH_KEY){echo '您的授权码错误!';exit;}
//下面我们再来验证一下授权域名是否正确
//通过$_SERVER[SERVER_NAME]获取当前访问的域名,并与我们返回的授权网址对比。如果不匹配,则输出错误信息,并终止程序运行。
if($authdata['url']!=$_SERVER[SERVER_NAME]){echo '授权域名不正确!';exit;}
//再来做一个到期时间的判断
//将到期时间与授权服务器上的当前时间做对比,如果到期时间小于服务器当前时间,授权到期,则输出错误信息,并终止程序运行。
if($authdata['edate']<$authdata['mytime']){echo '授权已到期!';exit;}
//这里我们是将授权到期时间与授权服务器上的时间做对比,而没有跟客户端的时间做对比,目的是防止用户修改客户端的时候,以达到绕过授权。
//有时候,我们可能会有不同的软件产品,这时,我们就需要对授权所对就的产品做验证,以防止用户一个授权码所有软件均能使用。
if($authdata['cpid']!="产品ID号"){echo '对不起,授权的产品不匹配!';exit;}
//这里的产品ID,填写云授权后台产品的对应ID号。
?>
以上就是PHP授权验证代码。真正的代码其实只有十几行,这样就完成了自动授权对接。 这里要说明的是,实际应用中,做上整合对接后,请自行请相关代码做编译或加密处理。
授权采用API接口请求调用原理,API接口参数中包含授权码,请求后,返回一组JSON数据。
这一点跟微信公众号或其它API接口请求原理差不多,只不过,我们