0. 서론

다른 곳에서도 썼던건데 걍 복붙해서 올림



1. 사전지식 - Open API란?

일반 유저들이 게임사가 제공해주는 "합법적인 루트"를 이용하여

인게임 및 아웃게임의 여러가지 정보를 "직접 요청"해서 받아낼 수 있는 것


현재 시스템 상 스마일게이트 및 넥슨의 모든 유저는 자신의 API 키를 직접 발급받을 수 있고

이 API 키 라는 것으로 각각의 게임의 정보를 요청한다.


보통 API 키는 일반 유저가 발급받을 이유도, 알 필요도 전혀 없는 기능이지만

각각의 게임의 특수성 때문에 일반 유저도 이 키를 발급받은 사람이 많은 상황인데


로스트아크의 경우에는 기본적으로 1분에 100회 API 요청 제한이 있으며, 이 횟수를 늘리려면 여러 가지 정보를 필요로 한다.

따라서 아이스펭 등의 사이트에서 일반 유저가 각자의 API 키를 이용하여 분당 100회 제한으로 악세 검색을 하도록 구현해두었음.


메이플스토리의 경우에는 기본적으로 일반 유저가 발급받으면 하루 1000회 요청 제한이 있지만,

별다른 제한 없이 개발자용 API키를 발급받을 수 있다.

개발자용 API 키를 받으면 하루 2000만회 요청 제한으로 제한이 대폭 늘어나기에,

대부분의 유저 개발 사이트에서는 개인의 API키를 요구할 필요가 전혀 없음.

단, 특수한 경우에서 유저의 API 키를 요구하는데 이 부분은 아래에서 자세히 설명하겠음.




2. 인벤의 인장 인증 시스템이란?

image.png 정보글) 로아 인장도입이 현재 시점에서는 불가능한 이유


넥슨에서 제공하는 Open API를 이용해서 이 인벤 계정을 사용하는 사람이 유저 본인임을 인증할 수 있도록

몇달 전 인벤에서 도입한 시스템임

실제로 정상적으로 인증했다면 오른쪽에 보이는 "게임프로필" 탭에서 스펙을 볼 수 있게 되어있음.

이걸 인증하려면 1에서 언급한 각각의 유저의 API KEY를 필요로 함.



3. 로아는 왜 안됨?

이걸 알아보기 위해서 이제 각 게임사의 API 시스템을 알아볼 필요가 있다.


3-1. 로스트아크의 API 구성

image.png 정보글) 로아 인장도입이 현재 시점에서는 불가능한 이유

왼쪽에 보면 NEWS부터 GAMECONTENTS까지 여러 카테고리가 있는데

이 중 CHARACTERS와 ARMORIES를 제외한 나머지 카테고리의 API들은 말 그대로 공통적인 데이터를 불러오는 API들임

예를 들면 NEWS는 홈페이지의 공지사항을 가져오고, AUCTIONS는 특정 매물의 경매장 상황을 불러오는 등의 역할을 한다.


그러면 우리는 CHARACTERS와 ARMORIES 카테고리를 확인할 필요가 있는데,

이 두 카테고리는 각각 캐릭터 정보와 캐릭터의 여러 장비 상태를 받아올 수 있는 카테고리이다.

본문에 적혀있는 것처럼 모든 API는 호출 시에 {characterName}을 인자로 받고 있는데,

이 말은 즉, 요청자가 누구건 알 바 아니고 "요청자가 원하는 캐릭터 정보"에 대한 값을 내려준다는 의미임

따라서 API 키 자체만으로 요청자가 누구인지 구별할 수 있는 API가 아예 존재하지 않는다는 뜻이다.



3-2. 메이플스토리의 API 구성

image.png 정보글) 로아 인장도입이 현재 시점에서는 불가능한 이유

여기도 왼쪽에 여러 카테고리가 있다.

캐릭터 식별자(ocid)라는걸 인자로 받는데, 이건 캐릭터별로 가진 ID값이고 누구나 맨 위에 보이는 저 API로 받아올 수 있다.

그냥 단순히 캐릭터 닉네임이랑 같은 개념의 인자라고 보면 됨.


사진은 능력치 정보 조회 API인데, 우측의 파라미터를 보면 유저의 API 키, 식별자, 날짜를 받고 있다.

여담이지만 메이플스토리의 API는 특이하게도 일부 데이터(공지 등 아웃게임 데이터, 장착 장비 상태 등)를 제외하면

모든 데이터는 하루에 한 번 (새벽 1~2시 경으로 알고있음) 백업을 하고 있고,

따라서 API 호출 시에 어떤 시점의 데이터를 불러올 것인지 같이 요청할 수 있음.

대부분은 최신 정보만 호출하지만, 이 점을 이용해서 유저의 경험치 성장 로그 등을 보여주는 사이트도 개발할 수 있다.


이 점만 보면 ocid를 누구나 불러올 수 있다는 점에서 로스트아크 API와 크게 다르지 않아 보이지만

가장 큰 차이점이 한 가지 있는데


image.png 정보글) 로아 인장도입이 현재 시점에서는 불가능한 이유

그게 바로 이 캐릭터 목록 조회 API임

이 API는 생긴 걸 보면 알겠지만 정말 담백하게 딱 API Key 하나만을 인자로 받고 있고

요청 시 해당 API 키에 연결된 계정 내의 모든 캐릭터 정보(닉네임, OCID, 월드, 레벨 등)를 내려 줌


즉, 인벤은 이 시스템을 이용해서 유저에게 직접 API키를 요구하고

각자 유저가 자신의 API키를 발급받아서 인벤에 제공하면

인벤은 그걸로 저 API를 이용하여 요청을 보내면 "인증된" 캐릭터 목록을 넥슨에서 직접 받아올 수 있게 되는 시스템임

이게 인장 시스템의 원리.




4. 결론

- 현재 인벤의 인장 시스템은 게임사에서 직접 제공하는 Open API를 기반으로 제작되어 있다

- 메이플은 자신이 직접 발급받은 API 키로 "키 주인의 계정 정보"를 가져오는 API가 있지만, 로아는 그게 없음

- 로스트아크도 공식 인장이 도입되려면 관련 API를 위와 같은 형태로 스마게가 직접 제공해주어야 하지만 지금까지 이런 "거름망" 시스템을 정말 싫어하는 행보를 보여준 로아가 과연 해줄지는.. 잘 모르겠다.