Nintendo Switch OnlineのAPIの仕様変更について

話題

NSO APIとは

NSO APIはイカリング2からデータを取得するために必要なiksm_sessionを取得するAPIです。

ここに仕様変更があるとSalmoniaを含め、ikawidget2やsplatnet2statinkなど全てのAPIを利用するツールが使用不可になります。

ただ、iksm_sessionには有効期限があるので24時間以内にデータ取得を繰り返すことで期限切れになるのを防ぐことができます。

変更点

accounts.nintendo.com/connect/1.0.0/authorize

認証のためのURLを生成する部分ですが、ここには変更はありませんでした。

accounts.nintendo.com/connect/1.0.0/api/session_token

セッショントークンを生成する部分ですが、User-Agentに変更がありました。

また、Content-Lengthにも変更があり、常に長さ541が返るようでした。

User-Agent: OnlineLounge/1.5.2 NASDKAPI Android
Content-Length: 540
->
User-Agent: OnlineLounge/1.6.1.2 NASDKAPI Android
Content-Length: 541

が、どうもコンテンツの長さは特に気にしていないようです。

accounts.nintendo.com/connect/1.0.0/api/token

前回、Content-Lengthが変わった場所ですが、今回はUser-Agentが変わっただけでした。

User-Agent: OnlineLounge/1.5.2 NASDKAPI Android
->
User-Agent: OnlineLounge/1.6.1.2 NASDKAPI Android

api.accounts.nintendo.com/2.0.0/users/me

ここもUser-Agentが更新されただけでした。

ひょっとしたら細かいところで違いがあるかもだけど、調べてないからわからない。

User-Agent: OnlineLounge/1.5.2 NASDKAPI Android
->
User-Agent: OnlineLounge/1.6.1.2 NASDKAPI Android

api-lp1.znc.srv.nintendo.net/v1/Account/Login

X-ProductVersion: 1.5.2
Content-Length: 1080
->
X-ProductVersion: 1.6.1.2
Content-Length: ????

動的に値が変わるようになりました。設定する値自体はlen(json.dumps(parameter)などで取得できるのだが、ちょっとズレていたりするのでオフセットを考えるのが面倒。

で、肝心のエラーが発生しているのがここでは7つのパラメータでsplatoon2のアクセストークンを取得しています。

'f':          flapg_nso["f"],
'language':   user_info["language"],
'naBirthday': user_info["birthday"],
'naCountry':  user_info["country"],
'naIdToken':  flapg_nso["p1"],
'requestId':  flapg_nso["p3"],
'timestamp':  flapg_nso["p2"]

このうち、user_infoに関しては別の関数で正しく取得できているので、flapg_nsoの値をニンテンドーサーバが受け付けなくなったということです。

要約すると

もし仮にflapg APIの変更が必要であれば、前回のような単純なアップデートではなく大規模な変更が行われたことを意味します。

flapg APIの仕様を完全に把握しているのがNexusmine氏しかおらず、初期のf値を求めるのに一ヶ月以上かかったことを考えると今回のアップデートは最悪とも言えるかもしれません。

次また使えるようになるのにどのくらいかかるのか、復旧はできるのかできないのかすら現状ではわからないとしか言えませんね。

少なくとも一日や二日で復旧するようなものではないと思います。

コメント

  1. 匿名 より:

    復旧しましたね。
    Nexusmine神

    • えむいー より:

      こちらでも確認しました。splatnet2statinkの修正が終わり次第、Salmonia側でも対応しようと思います。

  2. Anonymous より:

    Oooh, interesting. This may be useful for something.

タイトルとURLをコピーしました