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 Jotai 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 Vite 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/