先上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解析相关推荐

  1. 易班php,易班轻应用开发:PHP版

    最近易班的APP接入了我们学校,虽然很多地区评价为毒瘤,流氓等等,应用市场评价也是最低级别.但是,作为开发者,就不管它了,本文写的是一个查询成绩的轻应用(传送门:青果教务查成绩),这里就只说说,如何接 ...

  2. CISSP认证辅导(平时班、双休班、模考班、串讲班,一次通过考试,加量不加价)...

    CISSP(Certified information System Security Professional, 注册信息系统安全认证专家)是目前世界上权威.最全面的国际化信息系统安全方面的认证,由 ...

  3. php日历排班表,排班表 : 轮班工作者必备的排班神器

    排班表是一款实用的排班软件, 它帮助有规律轮班的人群清晰记录白班.夜班.休息时间,并用多种颜色.图标进行标注,解决繁琐的排班问题.支持同步到系统日历和通知中心下拉查看,还支持农历和起床闹钟. 清晰易用 ...

  4. 《数据结构》信管1133班和1134班同学链接

    信管1133班和1134班同学链接         3班32名,4班29名,共61人.每组第一名为组长. 1134-04   何文灿 1134-01   包春春 1134-22   幸广辉 1134- ...

  5. 个推实人认证SDK使用初体验

    以下是一位开发者在集成个推实人认证SDK时的亲身经历: 概述: 在某次产品迭代中,公司项目要用到对用户身份证信息的实人认证,我作为移动端的新晋萌新,Team Leader 把这个光荣的任务交给我来集成 ...

  6. c开发 易语言支持库,易写易库-用易语言开发易语言支持库.pdf

    易写易库-用易语言开发易语言支持库 易写易库(EXEK)用户手册 版本:0.2 作者:liigo,/liigo 时间:2008.10 概述 EXEK EXEK "易写易库(EEXXEEKK) ...

  7. 易源数据_易源接口showapi的使用

    1.背景介绍:showAPI(易源数据),易源数据通过打破资源壁垒,搭建起数据资源的基础设施,将接口纳入统一的接口池,把多个异构数据源合并到同一根管线上,以统一的访问和控制方式,对外提供统一格式的数据 ...

  8. 23道易忽略的java面试题及答案解析

    23道易忽略的java面试题及答案解析 转载:https://mp.weixin.qq.com/s/aL1xHKDfpojVVUOsdbvPzQ 1.你认为项目中最重要的过程是那些? 分析.设计阶段 ...

  9. 姚班、智班之后,量子信息班在清华成立,姚期智担纲,“致力国家战略需求”!...

    来源:大数据文摘本文约1500字,建议阅读5分钟量子信息班在清华大学宣布成立. 新华社近日的官方微博发布了一则消息显示,继计算机科学实验班(姚班),人工智能班(智班)之后,第三个拔尖创新人才项目--量 ...

  10. 丘成桐拉来又一菲尔茨奖得主全职加盟清华!年轻数学家40岁获奖,或带领军班、英才班本科生...

    转自:新智元 来源:清华大学.知乎 编辑:小匀 菲尔兹奖得主加盟清华大学,还是全职的那种! 是谁是谁? 近日,根据著名数学家.2018年菲尔兹奖得主Caucher Birkar的主页,他已加盟清华大学 ...

最新文章

  1. Android性能测试-分析工具
  2. LTE Module User Documentation(翻译6)——物理误差模型、MIMO模型、天线模型
  3. python自动化运维快速入门pdf下载_Python自动化运维快速入门
  4. php入门速成(2),PHP入门速成(1)
  5. 原生类型的autoboxing和auto-unboxing
  6. 【CHM】.chm文件无法正常显示的解决方案
  7. 代码检验方案:前端代码w3c校验
  8. python--之np.any,np.a;;
  9. 汽车智力游戏-汽车游戏大全
  10. 大学生职业生涯规划包word,ppt模板以及必备素材
  11. 工信部通报今年首批问题App 当当、1药网私自收集个人信息 被通报的16款App名单
  12. vad算法 c语言,腾讯视频cKey算法
  13. java笔试多么_世界多么精彩!
  14. java丐帮_java多线程学习笔记(三)
  15. 计算机专业勤学善思感悟,做一个勤学善思的人演讲稿
  16. IMAU 软件项目管理 期末复习总结 第六章
  17. 创建一个包含1-10的立方的列表
  18. android 录制屏幕 带声音 可直播方案 截屏
  19. 百度贴吧测试部门实习生电话面试
  20. 金蝶 EAS BOS F7过滤

热门文章

  1. 基础技术篇 8 —— iBeacon技术详解与应用
  2. 知客CRM携手湖南省粮油食品进出口集团有限公司
  3. numpy数组扩展函数repeat和tile用法
  4. (转)ECC算法详细分析
  5. Python考NCT1级必备运用题合集
  6. CLOS网络的无阻塞条件
  7. 信号干扰效果(波形变形)
  8. QPS和并发数,究竟是何种关系?
  9. 闭包(closure)
  10. 【Rcode】生存分析: KM COX回归 随机森林 nomogram