Перейти к содержимому

Донат
На хостинг
ISK за переводы
до 75kk за 1000зн.
Хроники EVE
Сборник
Новичкам
Полезная информация
Фотография

ESI туториал или док


  • Авторизуйтесь для ответа в теме
22 ответов в теме

#1
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

всем привет. никак не пойму что это за хрень такая esi вроде написано что должно быть все хорошо и удобно, можно напрямую с сервака вытащить любую инфу что можно найти в самом игровом клиенте а на деле пробую разобраться и ничего не выходит. 

 

пытался курить эти темы:

https://esi.evetech....r_id_attributes

https://developers.e...e.com/blog/2019

 

 

честно сказать понимания полного не появилось. довольно мутные инструкции как на своем хосте что-то мутить есть, но у меня нет хоста и нет желания его заводить прямо сейчас, я бы хотел на локальной машине запилить какую-то утилиту, например, на dotnet отслеживать свои ордера в маркете или еще какую-то полезную инфу представить в удобном для себя виде. уже вроде пару лет прошло с момента ввода этого нового идеального во всем API есть ли где что почитать о нем или посмотреть? как там вытащить хоть что-то из приватной информации? если есть кто-то кто разобрался в теме буду рад послушать совета что делать и на что вообще ээта esi похожа.


  • 0

#2
Free pap

Free pap

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 643 сообщений
340
  • Client:Eng

но у меня нет хоста и нет желания его заводить прямо сейчас

Мне для удовлетворения информационных потребностей оказалось достаточно GESI. Вдруг поможет.


  • 0

 


#3
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

всем привет. никак не пойму что это за хрень такая esi вроде написано что должно быть все хорошо и удобно, можно напрямую с сервака вытащить любую инфу что можно найти в самом игровом клиенте а на деле пробую разобраться и ничего не выходит. 

Приветствую, хороший вопрос!

Вот официальный репозиторий CCP с доками, относящихся к ESI
https://github.com/esi/esi-docs

Есди собираешься что-то делать на дотнете, то на первых порах помогут готовые либы с забитым API.
https://github.com/seraphx2/ESI.NET

https://github.com/g...ter/EVEStandard

https://github.com/kubiq/eve-esi

По своему опыту могу сказать, что напильником в разной степени придётся обрабатывать любую библиотеку.

Советую использовать вариант авторизации OAuth2 и дотнетовский клиент OpenID Connect (из пакета Microsoft.AspNetCore.Authentication). Всё что есть в либах, касаемое авторизации, для серьезного применения не годится.



Дополнение на правах матюков.

Похоже, что в CCP референсные доки наподобие этой https://openid.net/s...t-core-1_0.html читают по диагонали. Поэтому и без того запутанный процесс авторизации (по описанию самих CCP) ещё является и несколько альтернативным вариантом в общепринятой практике. В следствие этого вряд ли найдётся большое количество сторонних сервисов или библиотек SSO (Single Sign-On), способных "из коробки" переварить предлагаемый метод авторизации.

А сам API не плох, да.


  • 0

#4
fxea

fxea

    Damage control

  • Faction pilots
  • PipPipPipPipPip
  • 2877 сообщений
755
  • EVE Ingame:^^
  • EVE Alt:Xeata
  • Corp:-D.G-
  • Ally:WarDogs
  • Channel:X-Tea
  • Client:Eng

тут где-то была тема, которую я периодически теряю, где основные моменты в 2х словах, но довольно доходчиво, изложены


  • 0

Сущности, игнор которых делает форум лучше: massdriver , Jerome Higs , КотМэн , anknown , Smoketriada , Likon , Corpse
<url=fitting:17843:2048;1:33896;3:1335;23:2488;5:2185;5:2446;5::>VNI ULTIMATE HULL TANK</url>
"Еще неизвестно запасы чего исчерпаются в этой игре раньше. Минералов или... игроков." © Art1st


#5
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

Приветствую, хороший вопрос!

Вот официальный репозиторий CCP с доками, относящихся к ESI
https://github.com/esi/esi-docs

Есди собираешься что-то делать на дотнете, то на первых порах помогут готовые либы с забитым API.
https://github.com/seraphx2/ESI.NET

https://github.com/g...ter/EVEStandard

https://github.com/kubiq/eve-esi

По своему опыту могу сказать, что напильником в разной степени придётся обрабатывать любую библиотеку.

Советую использовать вариант авторизации OAuth2 и дотнетовский клиент OpenID Connect (из пакета Microsoft.AspNetCore.Authentication). Всё что есть в либах, касаемое авторизации, для серьезного применения не годится.



Дополнение на правах матюков.

Похоже, что в CCP референсные доки наподобие этой https://openid.net/s...t-core-1_0.html читают по диагонали. Поэтому и без того запутанный процесс авторизации (по описанию самих CCP) ещё является и несколько альтернативным вариантом в общепринятой практике. В следствие этого вряд ли найдётся большое количество сторонних сервисов или библиотек SSO (Single Sign-On), способных "из коробки" переварить предлагаемый метод авторизации.

А сам API не плох, да.

 

 

а в проектах белый апишник не нужен?


  • 0

#6
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

а в проектах белый апишник не нужен?

Не-а. К ESI можно откуда угодно стучаться, без спроса оно не будет ничего отправлять.


  • 0

#7
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

Не-а. К ESI можно откуда угодно стучаться, без спроса оно не будет ничего отправлять.

 

 

спасибо. буду детально разбираться на выходных. на первый взгляд общий подход понятен, но не уверен, что не понадобятся дополнительные подсказки. 


  • 0

#8
Roudzik

Roudzik

    Clone Grade Omicron

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 18754 сообщений
3129
  • EVE Ingame:Roudzik
  • Corp:DCMI
  • Client:Eng

ESI же уже в устаревшие записали?


  • 0

Chaotic Neutral


#9
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

спасибо. буду детально разбираться на выходных. на первый взгляд общий подход понятен, но не уверен, что не понадобятся дополнительные подсказки.

Работает всё это следующим образом.

Создаём новое приложение https://developers.eveonline.com/

Заполняем поле Callback URL. Пожалуй, самый ответственный момент. Это тот адрес, на который будет перенаправлять пользователя сервер CCP после успешной авторизации через браузер. Можно сделать любым, например вида http://localhost:808...th/eve/callback . Самое главное, чтобы на этом порту висело что-то способное принять запрос и ответить правильным образом.
Не забываем добавить нужные Scopes (области видения).

После того, как все поля заполнены правильным образом, формируем строку запроса для авторизации в соответствии с документацией https://docs.esi.eve...d_sso_flow.html
Библиотеки сообщества делают это сами, имея параметры с заранее введенными данными.


Таким образом, процесс авторизации проходит в следующем порядке:
- пользователь переходит по сформированной ссылке на сервер CCP (не важно откуда)
- авторизовывается
- сервер отправляет браузер пользователя по callback-адресу, прицепив к нему код автризации (code).
- пользовательское приложение получает GET запрос и вступает в игру, отправляя напрямую CCPшному SSO серверу POST запрос с code и ключом приложения (в доках это есть).
- если всё в порядке, то SSO сервер возвращает приложению ответ с токенами (обобщенно token, он же access_token и refresh_token). В дальнейшем access_token используется в запросах к ESI, а refresh_token служит для обновления первого (срок жизни access_token 20 минут, refresh_token - бессрочный)

Самая дичь (и уникальность) процесса связана с access_token. Он заменяет собой целых два общепринятых токена - id_token и token. То есть, совмещает в себе идентификаторы пользователя (JWT) и сессионный ключ доступа. Видимо, по этой причине начисто отсутствует endpoint с UserInfo на стороне SSO. Это же создаёт проблемы с верификацией токена (плюс набор полей JWT отличается от стандартного, а наличие public раздела ESI не решает проблему в полной мере). SSO сервер очень скуден на коды и описания ошибок, если что-то идёт не так.



При всём этом корректно работает нигде не документированный эндпоинт well-known, стандартный для OpenId, через который клиент получает данные о параметрах аутентификации. Хотя, сама аутентификация и авторизация OpenId в чистом виде невозможна.

Сообщение отредактировал esdef: 29 November 2019 - 2:29

  • 1

#10
dagreyv

dagreyv

    Newbie

  • Tech II Pilots
  • 25 сообщений
18
  • EVE Ingame:Alisa Red alert
  • Corp:Techno Hive
  • Client:Eng

https://docs.esi.eve...d_sso_flow.html

Вполне хватило данных чтобы разобраться как получить токен... правда приложение под андроид писал.
А дальше вытягивай, что душе угодно.


Сообщение отредактировал dagreyv: 29 November 2019 - 3:10

  • 0

#11
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

Чисто научный интерес: как потом игрок может прикрыть лавочку стороннему приложению,чтобы оно больше не имел доступа к данным сервера евы об игроке? с точки зрения старых api-key  решение было тривиальным (в кабинете стереть заведенный апикей) а как тут быть?


  • 0

#12
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

Чисто научный интерес: как потом игрок может прикрыть лавочку стороннему приложению,чтобы оно больше не имел доступа к данным сервера евы об игроке? с точки зрения старых api-key  решение было тривиальным (в кабинете стереть заведенный апикей) а как тут быть?

Надо зайти в соответствующий раздел центра поддержки и поудалять выданные ранее разрешения
https://community.ev...y-applications/


  • 0

#13
strannik_au

strannik_au

    Clone Grade Omicron

  • Tech III Pilots
  • PipPipPipPipPipPipPipPipPipPip
  • 27357 сообщений
2939
  • EVE Ingame:Warmeister
  • Corp:Tactical Farmers.
  • Ally:Pandemic Horde
  • Client:Eng

также вроде смена пароля инвалидирует все токены


  • 0

#14
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

https://github.com/kubiq/eve-esi

 

пока решил на этой библиотеке остановиться. у меня нет большого опыта работы с ASP, поэтому я не осилил пока первые 2 ссылки. но попозже еще раз попоробую. вообще я ждал что можно будет обойтись без эмуляции сервера и просто отправлять get-post запросы как будто из под браузера. такое я осилил бы если знать какие запросы. а вот с авторизацией через создание локального сервака и курлзапросами от локального сервака к серваку ESI я вообще надолго зависну.

 

а вот третья либа на пых-пыхе мне показалась довольно подробно задокументированной и я уже делал минимально простенькие php серваки, чтобы фронтэнд части было с кем поговорить :)  но я не очень увлекался этим делом. мне показалось что я смогу быстро понять что с ней делать если мне подскажут. но это пока что предварительная мысль.

 

хотел попросить пошагово подсказать что да как в этой библиотеке делать.

 

вот у меня, допустим, есть на https://test.ru развернутый сайт(локальный сервер под OSPannel)

 

на сайте https://developers.eveonline.com/ я зарегистрировал приложение 

у него есть допустим 

 

Client ID: "MYCLIENT_ID!!!!"

Secret Key: "mysecret!!!"

Callback URL: http://test.ru   (опять же это локально все лежит)

Scopes: (тут я выделил все что было, надеюсь это даст доступ сразу ко всем возможностям API чтоб потестить)

 

вот имею я такие входные данные. что делать дальше? (пс в PHP я не очень силен, я больше по фротнтэнду и js (десктопно на c# но только учусь скорее обширной практики нет. думал слепить для себя что-то простенькое похожее на pyfa) поэтому прошу простить за такие глупые вопросы. у меня есть сейчас лишний энтузиазм, который быстро сойдет на нет в попытках все осваивать с азов, если не будет совсем никаких сиюминутных результатов). ни с компоузером ни с модными бекэнд фреймворками я пока не знаком(готов учиться), но с объекнооринтированным кодом php и с js вполне в ладах, прошу направить в нужное русло. 

 

в идеале хотел бы написать бекэнд какого-то "сайтика" (test.ru) размещенного локально, который умел бы клиенской части отсылать полученный с esi json response (frontentd и будет JSON разбирать и выводить картинку, вся логика на фротэнде будет в общем) думаю такую задачу можно как-то сделать даже на нативном php и снуля. но почему-то у меня никак даже авторизоваться не выходит. 


Сообщение отредактировал триэлыч: 01 December 2019 - 3:12

  • 0

#15
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

вот имею я такие входные данные. что делать дальше? (пс в PHP я не очень силен, я больше по фротнтэнду и js (десктопно на c# но только учусь скорее обширной практики нет. думал слепить для себя что-то простенькое похожее на pyfa) поэтому прошу простить за такие глупые вопросы. у меня есть сейчас лишний энтузиазм, который быстро сойдет на нет в попытках все осваивать с азов, если не будет совсем никаких сиюминутных результатов). ни с компоузером ни с модными бекэнд фреймворками я пока не знаком(готов учиться), но с объекнооринтированным кодом php и с js вполне в ладах, прошу направить в нужное русло. 

 

в идеале хотел бы написать бекэнд какого-то "сайтика" (test.ru) размещенного локально, который умел бы клиенской части отсылать полученный с esi json response (frontentd и будет JSON разбирать и выводить картинку, вся логика на фротэнде будет в общем) думаю такую задачу можно как-то сделать даже на нативном php и снуля. но почему-то у меня никак даже авторизоваться не выходит. 

Есть много тулз для ESI, написанных на php, но я их препарировал лишь поверхностно. Работу выбранной либы сравнительно легко проверить.

Создаешь файл test.php , копируешь в него код из раздела Getting Started (почему я это пишу??)

Спойлер
, помещаешь этот файл в папку приложения (куда смотрит предварительно настроенный на переваривание php сервер apache, wamp, xampp - что угодно), пусть будет называться test_esi. Затем открываешь в браузере примерно такую страницу localhost/test_esi/test.php и там смотришь, что покажет функция print_r($result).
 

 

 


вот имею я такие входные данные. что делать дальше? (пс в PHP я не очень силен, я больше по фротнтэнду и js (десктопно на c# но только учусь скорее обширной практики нет. думал слепить для себя что-то простенькое похожее на pyfa) поэтому прошу простить за такие глупые вопросы. у меня есть сейчас лишний энтузиазм, который быстро сойдет на нет в попытках все осваивать с азов, если не будет совсем никаких сиюминутных результатов). ни с компоузером ни с модными бекэнд фреймворками я пока не знаком(готов учиться), но с объекнооринтированным кодом php и с js вполне в ладах, прошу направить в нужное русло. 

 

Не совсем понимаю, зачем начинать с серверных вариантов, если только познаешь программирование. Между прочим, пифа тоже отнюдь не простенькая.

Если хочешь использовать ESI и попутно обучаться программированию, то лучше взять действительно объектно-ориентированный язык. Тот же C#, Python. PHP последних версий годится, но тут можно в любой момент свернуть с правильного пути.

Ну и да, с чего наверно следовало начать, взятая тобой либа не самая удачная и скорее всего не подойдет для полноценной разработки приложения. Третья строка ридми:

This PHP package is automatically generated by the Swagger Codegen project


Я бы рекомендовал определиться с языком, подучить матчасть, затем выбрать предпочитаемый стек технологий (исходя из своих требований/желаний и наличия подходящих библиотек), углубиться в него и параллельно заниматься разработкой.

В ином случае, уже линковали GESI - когда хочешь получать данные из ESI, но не хочешь связываться с программированием.


Сообщение отредактировал esdef: 01 December 2019 - 13:01

  • 0

#16
Morozec

Morozec

    Clone Grade Eta

  • Tech III Pilots
  • PipPipPipPip
  • 718 сообщений
41
  • EVE Ingame:Elly Hita
  • Corp:ISIAT
  • Channel:Isiat-family
  • Client:Eng

я бы на твоём месте сначала определился чего ты хочешь.

исходя из этого нужно выбирать путь достижения цели.

 

если тебе нужен инструмент для торговли и производства, то важные данные(в виде цен с маркета) 

итак открыты и доступны без авторизации. Только получай по гет запросам.

 

тулза для торговли, которая считает разницу между купить верхний бай и продать ниже нижнего села

также не требует авторизации


  • 0

#17
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

в таком случае еще разок попробую разобраться с шарпом. я на самом деле попробовал с нуля авторизоваться по твоей инструкции. сделал экземпляр HttpListener настроил его на порт 9999 в нем слепил по инструкции url для того чтобы отправить по нему пользователя. а потом понял что следующий шаг я сдеоать не могу. и тут я решил схалтурить и пойти по пути php, потому что там общение с другим сервером мне знакомо немного. но наверно тут я неправ и все таки как-то решить с шарпом задачу. мне вот приглянулась зазлиотека ниже:

 

что на счет этого проекта https://github.com/seraphx2/ESI.NET

 

покопался в ней и там вроде нет ASP это типа просто обертка на API осталось только покопаться в коде и понять как пользоваться.

я бы на твоём месте сначала определился чего ты хочешь.

исходя из этого нужно выбирать путь достижения цели.

 

если тебе нужен инструмент для торговли и производства, то важные данные(в виде цен с маркета) 

итак открыты и доступны без авторизации. Только получай по гет запросам.

 

тулза для торговли, которая считает разницу между купить верхний бай и продать ниже нижнего села

также не требует авторизации

в моем случае процеес важнее результата. я просто ищу для себя интересный проект чтобы попрактиковаться, ну и делать что-то осмысленное. а на счет открытых данных это хорошо. я их уже посмотрел, но все равно надо утилите за ордерами персонажа следить и говорить когда они полностью выполнены или же далеко не в позиции и их надо переставить. в общем я точно уверен что нуждаюсь в приватной информации персонажа, для решения задачи.


  • 0

#18
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

в таком случае еще разок попробую разобраться с шарпом. я на самом деле попробовал с нуля авторизоваться по твоей инструкции. сделал экземпляр HttpListener настроил его на порт 9999 в нем слепил по инструкции url для того чтобы отправить по нему пользователя.

 
Где-то перемудрил.
 

 

 

что на счет этого проекта https://github.com/seraphx2/ESI.NET

 

Очень простой и хороший вариант для начала. Заточен под .net core. Если изучишь в официальных доках как бутстрапится приложение дотнеткор https://docs.microso...ru/dotnet/core/ ,

то без труда соберешь консольную программулину. Только ориентируйся на .net core версий 2.0 - 2.2.0, под которые собрана либа.


  • 0

#19
триэлыч

триэлыч

    Clone Grade Alpha

  • Tech II Pilots
  • Pip
  • 33 сообщений
2
  • EVE Ingame:EnderHexFyre
  • Client:Рус

 
Где-то перемудрил.
 

 

Очень простой и хороший вариант для начала. Заточен под .net core. Если изучишь в официальных доках как бутстрапится приложение дотнеткор https://docs.microso...ru/dotnet/core/ ,

то без труда соберешь консольную программулину. Только ориентируйся на .net core версий 2.0 - 2.2.0, под которые собрана либа.

по старинке dot net framework не сработает?

 

что значит бутсрапится? я просто привык, что бутсрап - это css фреймворк от твиттера. думал поискать в гугле, а он только на tvitter bootstrap и отправляет. 

 

покопался в исходных кодах. в общем не понял несколько моментов:

в ридми приведен пример 

EsiResponse response = _client.Universe.Names(new List<long>()
{
    1590304510,
    99006319,
    20000006
}).Result;

а вот EsiResponse это же дженерик тип, а тут нет фигурных скобок. и не понятно куда числа типа long пойдут что они значат. похожее непонимание дальше тоже встречается.

 

и в целом я не понял как пройти процесс регистрации. все таки наберусь наглости и попрошу дать мне пример рабочего кода желательно ключевые моменты комментировать, потому что в сети что-то ничего не публиковано, а по скромной и возможно даже невалидной документации на гитхабе и исходных кодах я не смогу сам разобраться. если подскажите буду вам страшно  признателен.

 

что бы я хотел научиться делать по итогу: мне нужно понять как организовать аутентификацию, и как потом использовать токены в запросах используя эту библиотеку, или если все там инкапсулировано, то как вообще интерфейс выглядит и как все организовать для нескольких персонажей, ну а если заводить проект и публиковать его где-то у вас нет времени, то хоть направьте меня что учить. пока моя компитенция ограничена примерно следующими знаниями: 

 основы ООП.

 дженерики

 интерфейсы (более мени понимаю ковариантность контравариантность)

 коллекции

 эксепшены

 делегаты, лямбды

 

 не по шарпу, но более мение понимаю работу алгоритмов и некоторых паттернов(думаю тут не пригодится).

 

может еще что по мелочи. плюс немного WPF.  подскажите что мне не хватает чтобы понять и осилить задачу?


Сообщение отредактировал триэлыч: 02 December 2019 - 8:43

  • 0

#20
esdef

esdef

    Clone Grade Iota

  • Tech III Pilots
  • PipPipPipPipPip
  • 1840 сообщений
368
  • EVE Ingame:esdef
  • Corp:SPVG
  • Ally:TEST
  • Client:Eng

Мм, я имел ввиду, что в основе своей приложение .net core построено на внедрении зависимостей и является DI-контейнером, который конфигурируется в классе Startup. Туда включаются все scoped-сервисы, синглтоны и там же должен находиться клиент ESI.
Можно забить на это и собрать самое простое консольное приложение на .Net 4.7.x (для пробы), но дальше встанет дилемма что с этим делать в принципе.

а вот EsiResponse это же дженерик тип, а тут нет фигурных скобок. и не понятно куда числа типа long пойдут что они значат. похожее непонимание дальше тоже встречается.

Если бы создал проект, попробовал настроить клиент ESI и написать хоть какой-то метод, то такого вопроса не возникло 100%.

Я подумаю на счёт Hello world сборки клиента, но дальнейшее обсуждение желательно вести в формате stackoverflow и по теме.


Сообщение отредактировал esdef: 02 December 2019 - 20:59

  • 0




1 посетителей читают тему

0 members, 1 guests, 0 anonymous users