Quantumleap
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/
Author
tkgling
Published at
2022-08-25