นี่คือเอกสารของ REST API ที่ใช้สำหรับแอพ Nintendo Switch และแอปพลิเคชัน Web Splatoon 2 แบบฝัง
การทดสอบทั้งหมดทำบน iPhone 7 ที่ใช้ iOS 10.3.3 โดยใช้แอพ Nintendo Switch เวอร์ชัน 1.0.4 ในวันที่ 07/30/17 ฉันกลับด้านวิศวกรรมโดยใช้ mitmproxy มันค่อนข้างง่ายเพราะแอพไม่ได้ใช้ใบรับรองเลย ฉันยังไม่ได้ทดสอบโดยใช้แอพ Android เลย แต่ฉันจะสมมติว่าทุกอย่างเหมือนกัน (นอกเหนือจากความแตกต่างของตัวแทนผู้ใช้ที่ชัดเจน) ฉันใช้บัญชีสหรัฐอเมริกากับภาษาที่ตั้งเป็นภาษาอังกฤษ อาจมีความแตกต่างเล็กน้อยสำหรับภูมิภาคอื่น ๆ
โครงการอุ้งเท้ารวมอยู่ในผู้ใช้ MacOS ซึ่งควรช่วยในการซ่อมแซม API ฉันขอแนะนำให้ลองใช้สิ่งนี้ก่อนเพื่อหาวิธีการทำงานของ API ดูตัวแปรสภาพแวดล้อมเพื่อดูสิ่งที่คุณต้องการกรอกเมื่อคุณกรอก Client ID Login Page Token Code Login Page Token Code Verifier และ Birthday คุณสามารถดำเนินการตามคำขอ Auth ตามลำดับและคุณควรจะไป
หมายเหตุ: ฉันขอแนะนำให้ตั้งค่า User-Agent ตามคำขอทั้งหมดไปยัง Splatoon 2 API เป็นสตริงต่อไปนี้เพื่อผสมผสานในนั้นจะไม่มีการตรวจสอบใด ๆ แต่ปลอดภัยกว่าขออภัย 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 นี้ถูกสร้างขึ้นอย่างไร ฉันขอแนะนำให้ลงชื่อออกจากแอพสวิตช์จากนั้นลงชื่อเข้าใช้และเปิดลิงค์ Sign Flow ใน Safari จากนั้นคุณสามารถเปิดได้ในคอมพิวเตอร์ของคุณและติดตามจากที่นั่น
เมื่อคุณลงชื่อเข้าใช้แล้วคุณจะถูกเปลี่ยนเส้นทางไปยังหน้าเช่น npf71b963c1b7b6d119://auth#session_state=[SessionStateReturnedHere]&session_token_code=[codehere]&state=[StateReturnedHere]
แยกเซสชัน _state และสถานะออกจาก URL นั้นและขอจากโพสต์/connect/1.0.0/api/session_token
ขอโพสต์/connect/1.0.0/api/token โดยใช้ session_token จาก 2
ขอโพสต์/v1/บัญชี/เข้าสู่ระบบ ใช้ id_token จาก 3
ใช้โทเค็นการเข้าถึงของคุณเพื่อดึงรายการเกมจาก Get/V1/Game/ListWebservices ใช้ webApiServerCredential["accesstoken"] จาก 4
ขอให้รับ/v1/game/getwebservicetoken ใช้ ID ของ Splatoon 2 จาก 5 และ webApiServerCredential["accesstoken"] จาก 4
ขอให้รับ / ใช้ accessToken จาก 6
ตอนนี้คุณสามารถร้องขอจาก Splatoon 2 API โดยใช้คุกกี้ที่ดึงมาจาก 7 ขอให้สนุก!