ESI,全称EVE Swagger Interface(EVE史瓦格接口)
ESI,是一种以Open API为规范的API接口
ESI简单来说,是一种不用登录游戏,就能对EVE世界进行探索与改变的一种途径,即:
国服网易的ESI官网(开发文档)网址为https://ali-esi.evepc.163.com/,您也可以在茄盟官网顶栏“外部链接”中找到该链接
注:本文重点对需要授权的ESI进行讨论
注:快速查看结论请跳转至ESI常见问答
注:实名参数问题请跳转至ESI实名参数认证失败解决方案
ESI主要有2种,公开查询型、认证查询型:
认证型的ESI由约66种权限构成,玩家在授权时可以选择是否提供这些权限,就像手机APP索要权限需要你确认一样,所以这里应该把:
这种盖棺定论,改成:
才是合理的,具体会在后文的“ESI授权认证”处会详细解释,下面将介绍如何区分“公开型”与“认证型”的ESI项目。
ESI授权也称ESI绑定,方式采用Oauth 2.0认证方式,想要挖掘出网易ESI的秘密,请读者重点阅读Oauth 2.0的4种认证方式:
本文不再赘述认证的具体流程与原理,请读者自行研究,特别是认证的流程图,请务必完全理解透彻。
注意:本小节内容对计算机网络知识要求较高,非专业者请多方查阅资料辅助阅读(编者为师范专业,所以我相信各位读者有能力解决这个问题的 ( •̀ ω •́ )✧)
经过调查,国服常用的几个网站的对ESI授权的方式汇总如下:
password(密码模式)和client(客户端模式)经检验,网易没有开放,故本文只讨论authorization(授权码模式)与implicit(简化模式),两者的本质都是获取认证最需要的access_token,有了正确且未过期的access_token,服务器才会返回给你想查询的数据。
认证总览:直接获取access_token 步骤:
缺点:access_token时间较短,且获取流程需要人工操作,不适合大规模长期使用;
优点:安全性极高,20分钟后,access_token失效,想要权限就得再次认证,属于阅后即焚,无后顾之忧。
认证总览:获取code,用code获取access_token和refresh_token,再利用refresh_token获取新的access_token 步骤:
缺点:认证流程很复杂难懂,和正则表达式一样苦涩,且refresh_token泄露等于泄露银行卡密码一样;
优点:可持续性,生生不息,维护难度小,学会之后如正则表达式一样非常爽,魔法和奇迹都是有代价的!
详细的参数由于介质因素不作具体介绍,如想得知,请在文末参考链接寻找线索,或联系本文作者-茄盟著名研究员mc
很多情况下,我们需要使用玩家的ID才能完成认证型ESI的信息查询
但我们只有玩家给予的access_token,再去问玩家的游戏ID就显得很繁琐,那怎么才能获取到这个access_token的主人的ID呢?
Oauth2.0常用的check_token或者introspect获取绑定信息的办法,在网易的EVE服务器认证中并没有开通,所以我们只能另找办法。这里提供其中的2种方法供参考:
返回的参数如下:
参考地址:
https://ali-esi.evepc.163.com/ui/?version=meta#/Meta/get_verify
仔细观察access_token,是被2个“.”分成了3部分,这其实是一个JWT令牌:
第二部分的Payload(负载)可经过base64解码,得到一个json数据,里面的“name”属性即为对应玩家的名字。
参考地址:
https://auth0.com/docs/secure/tokens/access-tokens/validate-access-tokens
https://zhuanlan.zhihu.com/p/370670759
方法A:进入网易EVE官网,右上角“ESI解除授权”处,可以使上文中所有的“access_token”与“refresh_token”全部失效
方法B:参考Oauth2.0的“revoke”用法,可以选择性使得上文中的“access_token”与“refresh_token”失效
方法C:refresh_token理论上,约1.5个月不使用,会被服务器清理,具体时间待验证
为了消除玩家对ESI的恐惧与误解,以下将介绍一些ESI的误区与能授权直接看到的东西:
以上为常见的一些ESI授权与直接应用,但并不是代表全部的应用,因为有些ESI不提供的数据,可以根据另外的已提供的数据,分析推导间接得出来,这个就要看各家代码工程师或数学家的各显神通了(就像柯南一样)。
由于大环境因素,实名认证有时会出现BUG,有3种解决方案,详情如下:
重要提醒:任何需要输入账号密码与个人身份信息的网站,请确认其顶级域名是否为163.com!
1.问:ESI会看我的一切信息吗?
1.答:不一定。这取决于你允许的授权项目数量;在你输入完你的账号密码,点击“授权”之前,会提示你授权的项目,请核实好后,三思而授权。 此外,IP地址、角色数量、账号密码等信息ESI是无法查看的。
2.问:ESI能解绑吗?
2.答:能。无痕模式访问https://evepc.163.com/,右上角“ESI解除绑定”。
3.问:ESI绑定会不会泄露密码?
3.答:不会。ESI绑定采用先进的Oauth 2.0认证,绑定网站(联盟或军团)没有办法获取你的账号密码,并请留意输入账号密码的页面是否为网易的域名(163.com)。任何直接索要你账号密码的联盟或军团行为请留意,自行判断。
4.问:ESI绑定后会过期吗?
4.答:不一定。看各联盟军团采用的绑定方式,code是10分钟、access_token是20分钟,refresh_token是长期不使用才会失效。详情可以阅读仔细完上文。
5.问:ESI技术成熟吗?
5.答:成熟。KB网、EVE市场、合同助手、pyfa、船老板等著名EVE工具都应用了ESI技术。
6.问:茄盟ESI技术是谁研究出来的?
6.答:“千秋燎原”主体导入,“Mcstuffins”关键突破。
7.问:茄盟ESI如何绑定?
7.答:访问http://lms.wdnmd.biz/,联系军团总监询问注册方式。
8.问:为什么要绑茄盟ESI?
8.答:茄盟为PVP联盟,为鼓励PVP成员,需要识别出非PVP成员,极大体现再分配优势,精准扶贫,促进联盟税收合理分配。