易班php,易班PHP-认证sdk解析
先上sdk的核心代码,代码是使用php写的,非常容易理解,我甚至想起了我亲戚家小孩看的《宝宝的PHP》。
/**
* @package YBAPI
*
* 授权认证接口
*
* 使用授权认证协议认证方式的接口
* 授权接口中的接口对于appid或appsecret还有access_token有不同的需求
* 调用不同方法时需要开发人员保证已经把对应的配置值传入
*/
class YBAPI_Authorize{
const API_OAUTH_CODE= "oauth/authorize";
const API_OAUTH_TOKEN= "oauth/access_token";
const API_TOKEN_QUERY= "oauth/token_info";
const API_TOKEN_REVOKE= "oauth/revoke_token";
/**
* 构造函数
*
* 使用YBOpenApi里的config数组初始化
*
* @param Array 配置(对应YBOpenApi里的config数组)
*/
public function __construct($config) {
foreach ($config as $key => $val) {
$this->$key= $val;
}
}
/**
* 设置访问令牌
*
* @param String 访问令牌
* @return YBAPI_Authorize 本身实例
*/
public function bind($token) {
$this->token = $token;
return $this;
}
/**
* 生成授权认证地址
*
* 客户端重定向到授权地址
* 获取授权认证的CODE用于取得访问令牌
*
* @paramString 防跨站伪造参数
* @returnString 授权认证页面地址
*/
public function forwardurl($state = 'QUERY') {
assert(!empty($this->appid), YBLANG::E_NO_APPID);
assert(!empty($this->backurl), YBLANG::E_NO_CALLBACKURL);
$query = http_build_query(array(
'client_id'=> $this->appid,
'redirect_uri'=> $this->backurl,
'state'=> $state,
));
return YBOpenApi::YIBAN_OPEN_URL.self::API_OAUTH_CODE.'?'.$query;
}
/**
* 通过授权的CODE获取访问令牌
*
* 应用服务器只需要请用此接口
* 自动处理重定向
*
* @paramString 授权CODE
* @paramString 应用回调地址
* @returnArray 访问令牌哈希数组
*/
public function querytoken($code, $redirect_uri = '') {
assert(!empty($this->appid), YBLANG::E_NO_APPID);
assert(!empty($this->seckey), YBLANG::E_NO_APPSECRET);
if(empty($redirect_uri)) {
$redirect_uri = $this->backurl;
}
$param = array(
'client_id'=> $this->appid,
'client_secret'=> $this->seckey,
'code'=> $code,
'redirect_uri'=> $redirect_uri
);
$info = YBOpenApi::getInstance()->request(self::API_OAUTH_TOKEN, $param, true, false);
if(isset($info['access_token'])) {
$this->bind($info['access_token']);
}
return $info;
}
/**
* 获取用户token
*/
public function getToken(){
if(isset($_GET['code']) && !empty($_GET['code'])) {
/**
* 使用授权码(code)获取访问令牌
* 若获取成功,返回 $info['access_token']
* 否则查看对应的 msgCN 查看错误信息
*/
$info = $this->querytoken($_GET['code']);
if(isset($info['access_token'])) {
return array('status'=>true, 'token'=>$info['access_token']);
}else {
return array('status'=>false, 'msg'=>$info['msgCN']);
}
}else {// 重定向到授权服务器(这里使用header()重定向,可用使用其它方法)
header('location: '.$this->forwardurl());
return array('status'=>false, 'msg'=>'');;
}
}
}
?>
对于定义部分不作过多解释,首先我们可以看到,首先创建了几个函数用于提取config和token中的信息。
之后使用函数使用提取的内容创建一个可访问验证url,供用户调用
之后的便是处理服务器返回的json文件,来作为用户的令牌;显而易见,这是一个非常简单的,简单到完全不像sdk的sdk,以至于别的接口全要用户自己写,易班真的NB!!!
易班php,易班PHP-认证sdk解析相关推荐
- 易班php,易班轻应用开发:PHP版
最近易班的APP接入了我们学校,虽然很多地区评价为毒瘤,流氓等等,应用市场评价也是最低级别.但是,作为开发者,就不管它了,本文写的是一个查询成绩的轻应用(传送门:青果教务查成绩),这里就只说说,如何接 ...
- CISSP认证辅导(平时班、双休班、模考班、串讲班,一次通过考试,加量不加价)...
CISSP(Certified information System Security Professional, 注册信息系统安全认证专家)是目前世界上权威.最全面的国际化信息系统安全方面的认证,由 ...
- php日历排班表,排班表 : 轮班工作者必备的排班神器
排班表是一款实用的排班软件, 它帮助有规律轮班的人群清晰记录白班.夜班.休息时间,并用多种颜色.图标进行标注,解决繁琐的排班问题.支持同步到系统日历和通知中心下拉查看,还支持农历和起床闹钟. 清晰易用 ...
- 《数据结构》信管1133班和1134班同学链接
信管1133班和1134班同学链接 3班32名,4班29名,共61人.每组第一名为组长. 1134-04 何文灿 1134-01 包春春 1134-22 幸广辉 1134- ...
- 个推实人认证SDK使用初体验
以下是一位开发者在集成个推实人认证SDK时的亲身经历: 概述: 在某次产品迭代中,公司项目要用到对用户身份证信息的实人认证,我作为移动端的新晋萌新,Team Leader 把这个光荣的任务交给我来集成 ...
- c开发 易语言支持库,易写易库-用易语言开发易语言支持库.pdf
易写易库-用易语言开发易语言支持库 易写易库(EXEK)用户手册 版本:0.2 作者:liigo,/liigo 时间:2008.10 概述 EXEK EXEK "易写易库(EEXXEEKK) ...
- 易源数据_易源接口showapi的使用
1.背景介绍:showAPI(易源数据),易源数据通过打破资源壁垒,搭建起数据资源的基础设施,将接口纳入统一的接口池,把多个异构数据源合并到同一根管线上,以统一的访问和控制方式,对外提供统一格式的数据 ...
- 23道易忽略的java面试题及答案解析
23道易忽略的java面试题及答案解析 转载:https://mp.weixin.qq.com/s/aL1xHKDfpojVVUOsdbvPzQ 1.你认为项目中最重要的过程是那些? 分析.设计阶段 ...
- 姚班、智班之后,量子信息班在清华成立,姚期智担纲,“致力国家战略需求”!...
来源:大数据文摘本文约1500字,建议阅读5分钟量子信息班在清华大学宣布成立. 新华社近日的官方微博发布了一则消息显示,继计算机科学实验班(姚班),人工智能班(智班)之后,第三个拔尖创新人才项目--量 ...
- 丘成桐拉来又一菲尔茨奖得主全职加盟清华!年轻数学家40岁获奖,或带领军班、英才班本科生...
转自:新智元 来源:清华大学.知乎 编辑:小匀 菲尔兹奖得主加盟清华大学,还是全职的那种! 是谁是谁? 近日,根据著名数学家.2018年菲尔兹奖得主Caucher Birkar的主页,他已加盟清华大学 ...
最新文章
- Android性能测试-分析工具
- LTE Module User Documentation(翻译6)——物理误差模型、MIMO模型、天线模型
- python自动化运维快速入门pdf下载_Python自动化运维快速入门
- php入门速成(2),PHP入门速成(1)
- 原生类型的autoboxing和auto-unboxing
- 【CHM】.chm文件无法正常显示的解决方案
- 代码检验方案:前端代码w3c校验
- python--之np.any,np.a;;
- 汽车智力游戏-汽车游戏大全
- 大学生职业生涯规划包word,ppt模板以及必备素材
- 工信部通报今年首批问题App 当当、1药网私自收集个人信息 被通报的16款App名单
- vad算法 c语言,腾讯视频cKey算法
- java笔试多么_世界多么精彩!
- java丐帮_java多线程学习笔记(三)
- 计算机专业勤学善思感悟,做一个勤学善思的人演讲稿
- IMAU 软件项目管理 期末复习总结 第六章
- 创建一个包含1-10的立方的列表
- android 录制屏幕 带声音 可直播方案 截屏
- 百度贴吧测试部门实习生电话面试
- 金蝶 EAS BOS F7过滤