Categories
Tags
Alamofire Android AppStoreConnect AWS Bun C++ cAdvisor CFW Cloudflare Cloudflare Access Cloudflare KV Cloudflare Tunnel Cloudflare Workers D1 Deno DevContainer Discord Docker ECR ECS Edizon Emulator EmuMMC Fastlane Firestore Frida Ghidra Git GitHub GitHub Actions GitLab GPG Grafana HACGUI Heroku Homebrew Hono IDA Pro iOS IPSwitch Jailbreak Javascript JSON JWT LanPlay Linode macOS Mirakurun MongoDB NestJS NextJS Nintendo Nintendo Switch NodeJS PHP PostgreSQL Prisma Programming Prometheus Python React Realm RealmSwift Ruby Salmon Run Salmonia3+ Shogi Sideload Snap Splatoon Splatoon2 Splatoon3 SSH Stable Diffusion Starlight Swift Swift Package SwiftUI Switch TensorRT Turf War Typescript TypeScript Ubuntu Ubuntu Server VNC VPN VSCode Vue WARP Wireguard XCode Xcode yarn zsh 家電 横歩取り
398 words
2 minutes
任天堂のAPIアップデートに対応しました
変更内容
今回の API の変更は任天堂のサーバー側の問題でした。
より具体的にいうとセッショントークンを取得する過程で必要な二つのトークンを取得する際に外部 API を使ってf
という値を生成しているのですが、そのf
が正しく任天堂の公式アプリから生成されているものかどうかを厳密にチェックするようになりました。
というのも、f
を計算するにあたってtimestamp
の値が必要なのですが、これを外部サーバーを利用して取得すると通信時の遅延の問題で、実際にf
を発行した時間と、API を叩いてf
を取得した時間に差異が発生してしまいます。
そしてf
が実際に生成された時間と 1 秒以上ズレたリクエストを送ると、サーバー側で 9599 のエラーが出るようになっていたというわけです。
タイムスタンプの変更
iOS 側では変更がないのですが、Android 側では 13 桁のタイムスタンプを利用するようになっていました。
UUID
ランダムな値で、iOS では全て大文字、Android では全て小文字ですが、現在任天堂はそれらをチェックしていないようです。
まとめ
任天堂くんさあ、API アップデートする前に教えてよ。
で、この方式がスプラ 3 でも採用されるんじゃないかなって思っています。
任天堂のAPIアップデートに対応しました
https://fuwari.vercel.app/posts/2022/08/update/