※ こちらの不具合は 10/6 にすでに修正されています
イカリングの情報を使ったクライアント作ってたら気づいた。
Nintendo Network の Web な OAuth を使ったサービスってイカリング以前に Miiverse があるのですが、これで実は実装を済ませていたので、今回のイカリングでもそれを流用したわけです。でまあ、Web の OAuth っちゅーのは次のようなプロセスがユーザーから見えてて。
- クライアントにサービスプロバイダー認証のための URL を得る。 (ex) ttps://miiverse.nintendo.net/auth/forward
- ユーザーはサービスプロバイダーの認証ページにアクセス。
(ex) ttps://id.nintendo.net/oauth/authorize?client_id=&redirect_uri=&response_type=code&state=* - (ユーザーが NNID, PW 入力する)
- 認証判定 (ex) ttps://id.nintendo.net/oauth/authorize
- コールバックリダイレクト (ex) ttps://miiverse.nintendo.net/auth/callback?code=&state=
- クライアントのページ表示 (ex) ttps://miiverse.nintendo.net/
という一連の流れを踏むはずなんですよね。上は Miiverse の例です。これは正しいはず。一方、イカリングはおかしいんですよね。
- 再度サービスプロバイダー認証 URL を得ようとする (謎) (ex) ttps://splatoon.nintendo.net/users/auth/nintendo
- 認証済みなので認証ページは出さないけど認証ページの URL にアクセス (謎)
(ex) ttps://id.nintendo.net/oauth/authorize?client_id=*&redirect_uri=*&response_type=code&state=* - コールバックリダイレクト (ex) ttps://splatoon.nintendo.net/auth/callback?code=*&state=*
- クライアントのページ表示 (ex) ttps://splatoon.nintendo.net/
これ、Nintendo Network の OAuth サーバーに 2 倍の負荷かかってない? って思ったりするのですがどうなんでしょう。OAuth 詳しくないんですけど、これまずいなら任天堂さんなおしたほうがいいんじゃないかな、って思ったり。とりあえず今はこの方法でしかうまくセッション取れないっぽいので、そういう風に修正かける予定。ゴリ押しコードですね。
以上ー。
イカリングマジでもったいなくない? 仮に後半の再認証がなければあの 3 秒分もっと早くなるはず pic.twitter.com/6FkcMTjX2X
— モノトーン (@mntone) September 20, 2015
ゴリ押し感(同じことを 2 回やってうまくいく) pic.twitter.com/Bx1nFq215z
— モノトーン (@mntone) September 20, 2015
追記
これ ( https://t.co/kjbXWRbiBQ ) がこうなりました。スッキリ! pic.twitter.com/NKyy4gtkhf
— モノトーン (@mntone) 2015, 10月 6