Это документация API REST, используемые для приложения Nintendo Switch, и встроенного веб -приложения Splatoon 2.
Все тестирование проводилось на iPhone 7, работающем на iOS 10.3.3, используя версию 1.0.4 приложения Nintendo Switch 30/30/17. Я обратный инженер с использованием mitmproxy. Это было довольно просто, так как приложение вообще не использует сертификацию. Я вообще не тестировал, используя приложение Android, но я бы предположил, что все идентично (помимо очевидных различий в пользовательском агенте). Я использую учетную запись США с языком, установленным на английский. Там могут быть небольшие различия для других регионов.
Проект PAW включен для пользователей MacOS, которые должны помочь возиться с API. Я настоятельно рекомендую сначала попробовать это, чтобы выяснить, как работает API. Взгляните на переменные среды, чтобы увидеть, что вам нужно заполнить. После того, как вы заполните Client ID , Login Page Token Code , Login Page Token Code Verifier , а также Birthday , вы можете выполнить запросы AUTH в порядке, и вы должны быть полезны.
Примечание. Я рекомендую установить User-Agent по всем запросам в API Splatoon 2 на следующую строку, чтобы смешать. Похоже, нет никакой проверки на это, но лучше, чем сожалеть. Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60
Если вам интересно с компонентами с открытым исходным кодом, используемыми в приложении, я составил их здесь.
Эта страница представляет собой HTML -страницу, которая загружает поток AUTH, который вы обычно видите сначала при входе в приложение. Следуйте по потоку, войдя в систему с учетной записью.
https://accounts.nintendo.com/connect/1.0.0/authorize?state=* здесь] & redirect_uri = [... продолжается]
В настоящее время я понятия не имею, как генерируется этот URL. Я рекомендую выйти из приложения Switch, затем войти обратно и открыть ссылку для потока знака в Safari. Затем вы можете открыть его на своем компьютере и следовать оттуда.
После входа вы будете перенаправлены на страницу, такую как npf71b963c1b7b6d119://auth#session_state=[SessionStateReturnedHere]&session_token_code=[codehere]&state=[StateReturnedHere]
Извлеките session_state и состояние из этого URL и запрос из post/connect/1.0.0/api/session_token
Сделайте запрос на публикацию/connect/1.0.0/api/token с помощью session_token из 2.
Сделайте запрос на публикацию/v1/account/login. Используйте id_token из 3.
Используйте свой токен доступа, чтобы получить список игр из Get/V1/Game/ListWebservices. Используйте webApiServerCredential["accesstoken"] из 4.
Сделайте запрос получить/v1/game/getWebserviceToken. Используйте идентификатор Splatoon 2 от 5 и webApiServerCredential["accesstoken"] из 4.
Сделайте запрос, чтобы получить /. Используйте accessToken из 6.
Теперь вы можете сделать любой запрос из API Splatoon 2, используя файл cookie, полученные из 7. Веселитесь!