Esta es la documentación de las API REST utilizadas para la aplicación Nintendo Switch y la aplicación web integrada Splatoon 2.
Todas las pruebas se realizaron en un iPhone 7 con iOS 10.3.3 usando la versión 1.0.4 de la aplicación Nintendo Switch en el 30/07/17. I de ingeniería inversa usando MITMProxy. Fue bastante fácil ya que la aplicación no usa Pinning Cert en absoluto. No he probado el uso de la aplicación Android, pero supongo que todo es idéntico (además de las diferencias obvias de agente de usuario). Estoy usando una cuenta de EE. UU. Con el idioma establecido en inglés. Puede haber pequeñas diferencias para otras regiones.
Se incluye un proyecto de PAW para los usuarios de MacOS que debería ayudar a jugar con la API. Recomiendo probar esto primero para descubrir cómo funciona la API. Eche un vistazo a las variables de entorno para ver lo que necesita completar. Una vez que complete Client ID , Login Page Token Code , Login Page Token Code Verifier y Birthday , puede ejecutar las solicitudes de autenticación en orden y debería estar listo para ir.
Nota: Recomiendo establecer el User-Agent en todas las solicitudes a la API Splatoon 2 a la siguiente cadena para mezclar. No parece haber ninguna verificación para esto, pero es mejor que sea seguro. Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Mobile/14G60
Si tiene curiosidad por los componentes de código abierto utilizados en la aplicación, los he compilado aquí.
Esta página es una página HTML que carga el flujo de autenticación que normalmente vería primero al iniciar sesión en la aplicación. Siga el flujo iniciando sesión con una cuenta.
https://accounts.nintendo.com/connect/1.0.0/authorize?state=fice aquí] & redirect_uri = [... continúa]
Actualmente no tengo idea de cómo se genera esta URL. Recomiendo firmar desde la aplicación Switch, luego volver a iniciar y abrir el enlace de flujo de signo en Safari. Luego puede abrirlo en su computadora y seguir desde allí.
Una vez que inicie sesión, será redirigido a una página como npf71b963c1b7b6d119://auth#session_state=[SessionStateReturnedHere]&session_token_code=[codehere]&state=[StateReturnedHere]
Extraiga la sesión_state y el estado de esa URL, y solicite Post /Connect/1.0.0/api/session_token
Haga una solicitud para publicar /Connect/1.0.0/api/token usando session_token desde 2.
Haga una solicitud para publicar/v1/cuenta/inicio de sesión. Use id_token desde 3.
Use su token de acceso para recuperar la lista de juegos de get/v1/game/listwebServices. Use webApiServerCredential["accesstoken"] desde 4.
Haga una solicitud para obtener/v1/juego/getWebServiceToken. Use la ID de Splatoon 2 de 5 y webApiServerCredential["accesstoken"] desde 4.
Hacer una solicitud para obtener /. Use el accessToken desde 6.
Ahora puede hacer cualquier solicitud de la API Splatoon 2 usando la cookie recuperada de 7. ¡Diviértete!