任天堂のAPIアップデートに対応しました
Less than 1 minute
変更内容
今回の API の変更は任天堂のサーバー側の問題でした。
より具体的にいうとセッショントークンを取得する過程で必要な二つのトークンを取得する際に外部 API を使ってf
という値を生成しているのですが、そのf
が正しく任天堂の公式アプリから生成されているものかどうかを厳密にチェックするようになりました。
というのも、f
を計算するにあたってtimestamp
の値が必要なのですが、これを外部サーバーを利用して取得すると通信時の遅延の問題で、実際にf
を発行した時間と、API を叩いてf
を取得した時間に差異が発生してしまいます。
そしてf
が実際に生成された時間と 1 秒以上ズレたリクエストを送ると、サーバー側で 9599 のエラーが出るようになっていたというわけです。
タイムスタンプの変更
iOS 側では変更がないのですが、Android 側では 13 桁のタイムスタンプを利用するようになっていました。
UUID
ランダムな値で、iOS では全て大文字、Android では全て小文字ですが、現在任天堂はそれらをチェックしていないようです。
まとめ
任天堂くんさあ、API アップデートする前に教えてよ。
で、この方式がスプラ 3 でも採用されるんじゃないかなって思っています。