【第三方兴趣小组】关于如何获取ESI数据 第一课

回复
头像
Dnica Zhong
 New Eden Stock Corporation
 Fraternity.

帖子: 8
注册时间: 24-02-2019 22:42

【第三方兴趣小组】关于如何获取ESI数据 第一课

帖子 Dnica Zhong » 25-03-2019 00:59

大家好,我是WNESC的老钟。
今天想跟大家分享一下关于CCP向全宇宙公开的ESI数据到底是什么东西。想要拿到这些数据的前置条件又是什么。
  • 贴子说明:
1、本贴主要内容 :什么是ESI、SSO及它们的工作流程;
2、学习本贴的前置技能 :懂得基本软件编写能力、了解网络通信机制;
3、本贴面向人群 :想入门开发EVE的第三方工具(紧限合法工具)的同学们,["WG类"请“Ctrl+W”吧] :oops:
  • 贴子内容:
1.1、ESI数据是什么东西
按通俗说来,ESI应该属于一套广播系统(比如:GPS的广播系统),它应该是全天无休的向全宇宙开放EVE游戏内绝大部分数据的一套系统,打个比喻:某玩家想能有3个角色在吉它市场挂单中,他不想一个个角色去登录游戏去了解每个角色的市场挂单情况,那他就可以能“下载”ESI数据来了解每个角色的情况;

这里说明一下为什么是“下载”,而不是“读取”呢,就如前面所说ESI是一套广播系统,所有的数据前不是根据用户的需求而反馈数据的,他是“定时”更新的,更新好的临时数据会被放在一个缓存机制内,等待下一次更新的时候被覆盖;通俗来说就是EVE的缓存机制就是像很多个小房间,ESI就像一座大厦管理者轮流的向每一个房间放信息;

案例:
某玩家的3个角色,都在市场上挂单了,那CCP就会在ESI这个系统里每隔五分钟将这3个角色的信息缓存起来(PS:ESI的市场订单是约每隔五分钟更新一次);

数据更新时间 :A角色为2019/03/24 15:37:25,B角色为2019/03/24 15:33:23,C角色为2019/03/24 15:34:15,
下次更新时间 :A角色为2019/03/24 15:42:26,B角色为2019/03/24 15:38:24,C角色为2019/03/24 15:39:16,

以上就ESI每一个API给出的更新时间是不一新的。像:市场订单类是约五分钟,物品库存是约一小时,其他还有些会出现是10小时更新一次的情况;因为ESI的API函数量较多,本节课就不一一例举了。

ESI的网址: https://esi.evetech.net/


1.2、SSO是什么东西
讲了ESI的更新机制我们继续讲一下,这个向全宇宙开放的数据,是如何下载的呢?ESI数据虽然是全开放,但它还是属于“权限下载的”,就是说:如果你要下载一些涉及玩家的自身信息时,是需要授权的(如果不用授权的话,早就把敌对联盟的所有人下线位置下载来了)
讲到授权,那我们就要讲一下“SSO" :

什么是"SSO”,全称“Single Sign On”,中文“单点登录”,定义:“SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统”(度娘说的)

通俗一点来说:A君有很多业务需要处理,这些需处理的业务数据都放在某栋大厦(ESI)的某个房间(API)里,理论上进入这个大厦是需要账号和密码的;实际情况是A君的时间有限并不能独自去处理这些业务,这时就有很多代理公司(各大EVE周边网站)去帮A君去处理这些业务;但A君不可能将自身的账号和密码交给这些代理公司(毕竟不安全),那就A君和大厦的管理者(CCP)_就做了一个约定,代理公司要帮A君去办理业务就要与A君一起去大厦的管理处,签一个协议,管理者验证A君的账号和密码(A君自己提供)和代理公司的工作范围(scope)向大厦的管理处申请了一个协议钥匙(refresh_token),而代理公司就可以用这个协议钥匙(refresh_token)到管理处换进入大厦的访问钥匙(access_token),从而帮A君处理业务了,这把访问钥匙(access_token)是有时间限制的(ESI这边是1200秒,时效过了就要去管理处重新换新的访问钥匙),而协议钥匙(refresh_token)将会保存很久(没去验证过,基本上A君不去管理处注销,那么这个钥匙可以一直用)。这就是SSO的基本流程;

看大家可能会问,为什么不在管理处直接换到访问钥匙(access_token)呢,官方是这个样解释的:这个考虑到网络安全的问题,如果这个访问钥匙(access_token)中途被拦截了,那个这访问权限就会被公开了,劫持者会一直用A君的身份进入大厦,而A君因为将业务代理出去了,所以不会有所察觉,所有就不会主动注销访问钥匙了;

(PS:其实截取了协议钥匙(refresh_token)也是可以随意访问大厦的);

论SSO的安全性:
A君:自己管理着账号密码;
代理公司:可以协助A君管理业务,但无法取得A君的账号和密码;
大厦管理处:协调业务对接,提供业务接口,也无账号密码泄露的可能性。

EVE SSO原理:https://developers.eveonline.com/blog/a ... ated-calls

这是本节课的内容,下节课将讲一下《如何保留“协议钥匙(refresh_token)"和EVE中的SSO钥匙交换过程》;


第二节课链接:viewtopic.php?f=5&t=1366
第三节课链接:viewtopic.php?f=5&t=1369
上次由 Dnica Zhong 在 30-03-2019 14:19,总共编辑 3 次。

头像
xiaoC Mini
 STARCHASER Inc
 Fraternity.

帖子: 9
注册时间: 31-05-2018 14:58

Re: 【第三方兴趣小组】关于如何获取ESI数据 第一课

帖子 xiaoC Mini » 25-03-2019 10:58

什么时候下一堂课

头像
Dnica Zhong
 New Eden Stock Corporation
 Fraternity.

帖子: 8
注册时间: 24-02-2019 22:42

Re: 【第三方兴趣小组】关于如何获取ESI数据 第一课

帖子 Dnica Zhong » 25-03-2019 16:41

xiaoC Mini 写了:
25-03-2019 10:58
什么时候下一堂课
感谢关注,稍晚点会更新第二节课

回复

在线用户

正浏览此版面之用户: 没有注册用户 和 7 访客