EVEOnline ESI Excel教程 | 畅游星海 | Steam | Dota2 | EVEOnline |
logo头像

畅游星海

EVEOnline ESI Excel教程

EVEOnline ESI Excel教程

A Chinese Guide on ESI request using Excel

1. 简介(博主的第一个MD文档,排版请见谅)


Eve_esi

ESI是EVE Swagger Interface的简称。这篇博客将详细的介绍如何利用Excel中强大的Power Query功能调用ESI API,当然通过SSO验证是调用ESI功能的前提条件。目前能够找到的表格都是用Google Sheet实现的,Google嘛大家都了解,大局域网你就当他没有吧。有个问题来了,为什么ESI表格大多用Google Sheet?原因主要是:

  • ESI返回的是Json格式的数据

  • Google Sheet是可在线浏览和编辑的,原生支持Json文件的解析

  • Google Sheet可以添加触发器自动获取和更新ESI数据

使用Excel最大的缺点就是解析Json数据比较麻烦,但好在上手比较快,另外就是无法在线更新数据,这个给想获取实时数据的玩家带来了不便。不过Excel也不是完全一无是处,毕竟图形界面比较友好,普及率高。有句话说得好,高手在民间,本教程也就是抛砖引玉,希望有高手能够分享更漂亮的表格!

参考资料 SSO Authentication in Microsoft Power Query

2. 准备工作


提醒:试玩账号!

1
2
必须至少有一个账号完成过至少一次储值,以具备开发者许可。
如果自己实在没有(就想玩免费的,用别人的也行,不过最好是您熟悉的人。

2.1 软件

  • Microsoft Excel 2016 或以上版本,Office 365

之所以要求Excel版本,是因为上述版本包含Power Query功能。

  • Postman

完成账号的认证功能。Postman下载地址,根据自己的操作系统选择64bit或者32bit下载。

2.2 基本流程

Developers

使用上述软件完成ESI调用的基本流程如下:

  • 使用账号登陆EVEOnline开发者网站

    具有开发者账号需要至少完成过一次储值
    
  • 使用Postman更新Token

    更新代理请求
    
  • 使用Power Query更新账号登入请求

    每20mins就更新一次,这一步比较麻烦,需要使用到Postman生成的代码
    
  • 使用Power Query创建ESI调用函数

    具体调用函数可参考ESI网站
    

3. 指南


3.1 使用开发者账号创建一个应用

依次点击EVEOnline开发者网站–>Manage Applications管理应用,登入您的账号。

您可以看到Create New Application创建新的应用按钮。点击进入后,可以看到一个表格。

  • Name:随便取一个您喜欢的名字

  • Description: 一般都是描述这个应用的功能,可以随便填,比如“asdasdadad”都是可以的

  • CONNECTION TYPE: 这个很重要,必须选取Authentication & API Access ->会出现一个Permissions的新选项。

  • Permissions:这个是通过应用允许调用的ESI函数。如果想获取所有的ESI数据,完全可以全部都点上。

Scope

填好上述信息后,点击页面最底部的Create Application按钮,提交应用。回到Applications页面,您将看到自己刚才创建的应用。

Applications

点击上图中的View Applicaiton按钮,您将看到以下信息, 这些信息很重要后面设置Postman需要使用

Appsetting

至此,Application这边的设置就完成了。

3.2 通过Postman获取刷新识别码

首先您得注册一个Postman账号。填入Email,Username(账号名)和Password(密码),Create free account即可。完成注册后打开Postman软件登陆,Cancel取消,使用默认截面并点击下图中的Authorization标签。

Postman1

点击Get New Access Token按钮,进入下图设置页面

Postman1

图中显示为“粘贴过来”的几个空从Applications页面应用详细Application Settings获取,详见3.1节。

1
注意每个Scope,即以“esi开始的字符串”之间有一个空格。

设置完成后即可点击Request Token提交,会跳出一个EVE账号登陆窗口,输入您想查询的人物ID即可获取Access Token。

Postman_access

1
2
3
您可以使用同一个eve application应用,修改Postman的Token Name,
登陆不同的人物多次Request Token,则每个人物都有一个独立的refresh token。
点击Available Tokens可以看到您的人物记录。

点击Available Tokens下拉菜单,选取Manage Tokens,这个refresh_token后面会用到,如下图所示。

Postman_refresh_

3.3 在EXCEL中获取登入权限token

打开一个新的Excel表格,确保是2016及以上版本。依次选择“数据”标签->“获取数据”(第一个ribbon)->“自其它源”->“空白查询”,打开Power Query编辑器。在开始标签下点击“高级编辑器”,粘贴下列代码,修改Headers=[ ]中的内容(如何修改见后文中的代码说明),保存后关闭。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(refresh_token) =>

let
body = Text.ToBinary("grant_type=refresh_token&refresh_token="& (refresh_token) &""),
actualUrl = "https://login.eveonline.com/oauth/token",
options =[
Headers =[
#"Content-type"="application/x-www-form-urlencoded",
#"User-Agent"="ackurdeeve",
#"Authorization"="Basic YzJhNmQyMjExNWM3NDMzMTkzNmYyZjkwMTBlYzgzMmWMTViMkJsNjVOWXFsT1gwM2thVlNHMVFvc09YdA=="
],
Content=body
],

result = Web.Contents(actualUrl, options),
#"Imported JSON" = Json.Document(result,65001),
access_token = #"Imported JSON"[access_token]
in
access_token

上面代码说明:

  • (refresh_token) => 说明该代码是一个函数,输入参数为refresh_token,这个Token与3.2 Postman中最终获得的人物refresh_token相同。输入您的Postman token可以测试是否能够获得一行字符串,如“GuFSyLsTvbivY6v3qiwLptcbEbnUBpwv7-T3hH-_nFYQ3siXTBWaQUcbUtiwlL2B851ECP2Kwb7Dy7TaTHPo8A2”,该字符串可在ESI页面使用。

上面一系列操作都是为了获得这个Code,注意保存

excel_token

  • #”User-Agent” 是一串请求,用于EVE ESI识别应用,实际上不影响代码功能,改成你的应用名或者人物名即可。

  • #”Authorization”比较关键,Basic不要修改,你会用到Base64,在页面中使用这个格式clientid:secretkey生成base64码。clientid和secretkey为3.1中设置EVE Applications页面得到的。比如你的clientid是123123asda123,secretkey是jasdqeouoq,则输入格式为123123asda123:jasdqeouoq,生成token代码MTIzMTIzYXNkYTEyM++8mmphc2RxZW91b3E=如下图所示

excel_token

1
注意:Basic和生成的代码间有一个空格,其他保持默认即可。

4. 获取ESI数据

获取忠诚点数为例演示如何使用第3节中获取的token。点击下图中的Try it out!可以看到输入的参数:

esi_loyalty

  • character_id * :必须的。

  • datasource:可选,“–”视为“tranquility”,“singularity”为测试服。建议选取”–”,可以压缩查询链接的长度

  • token :必须的,就是第3.3节最后得到的base64码。

id如何获取呢,既然用了ESI,那么就地取材吧。使用ESI的Get Search功能。Categories选择character,在search中填入你的id,返回Json格式数据,2113709067就是你的人物id。

1
2
3
4
5
{
"character": [
2113709067
]
}

esi_getid

填入所有信息后,点击蓝色的Execute可以得到Request URL:

1
https://esi.evetech.net/latest/characters/2113709067/loyalty/points/?datasource=tranquility&token=yOuQh9Gi4ozcHoeRpAt9kw9lRW6rh37C7_D9wUA1TX0eF5ahcdzGiM12hlTC8LBl5KmhBdp-RGdHouFH6O3Arg2

Excel中可通过修改上述链接中的id(2113709067),以及对应的token值(yOuQh9Gi4ozcHoeRpAt9kw9lRW6rh37C7_D9wUA1TX0eF5ahcdzGiM12hlTC8LBl5KmhBdp-RGdHouFH6O3Arg2)获取ESI数据。每个Token的有效期为20分钟,ESI数据也有有效期,每种数据的有效期都不同,比如lp的介绍为“This route is cached for up to 3600 seconds”,表明ESI LP数据每个小时更新一次,而“/characters/{character_id}/wallet/
”cache只有120s,因此没有必要太快的获取实时数据。

5. EXCEL设置教程

教程2中提供了一个Tutorial供大家下载参考。

EVEOnline ESI Excel教程(2)

您可能感兴趣的内容:

1. 5级任务指引

2. 自建游戏加速器

返回主页