経緯
全然モバイルアプリ書かんのやけれど、認証情報の受け渡しについて考えるにあたって知っとかなあかんなぁと思って触ってて
SFSafariViewControllerとChrome Custom Tabsの動きは同じ感じって前提でちょっと検証したことを業界外の人向けくらいの内容で簡易まとめ
iOS11までの動き感
図の感じで正しい表現なのかはさておきイメージ。
アプリ(ポケモンGO)内でGoogleのアカウントを使ってソーシャルログインする場合下図のイメージになるはず
やりたいこととしては
+ アプリにID/PW等の情報を渡さずに認証したって情報を渡したい
+ Safariで既にGoogleログインしているのであればその情報を使いたい
iOS11にアップデートしたことによって
ポケモンGOでGoogleでログインボタンを押してもSafariのセッションが使えなかった。
事象としては、図で言うところの紫の枠でセッション情報が共有されなくなったらしい
(SFAuthenticationSessionってやつ使えってことなんやろな。)
やったこととしては、まずサインアウトして
Googleでログインのボタンを選択
Safariではログイン済みやのに、アカウント選択画面に至らない
(当然ながら別のアプリでSFSafariViewControllerでログインしててもここには表示されない)
ちなみに上記画面で右下のSafariマーク押すと、実際にSafari経由で認可要求を送るため、Safariの保持しているセッションでログインできる。
感想・疑問点
- iOS11対応前のアプリで起こる現象に出会った
- ポケモンGO側が予め対応準備してなかったの意外やなぁ
- なんでAppleはSFAuthenticationSessionとSFSafariViewControllerどっちでも行ける時期を作らんかったんやろ
- SFAuthenticationSessionの使い方勉強せななぁ
- あの画面やとID/PW入力したくないよなぁ
- ホンマにSafariViewControllerなんかなぁって不安が残る
- ポケモンGOやったらまぁまだ良いけど良からぬアプリにID/PW打ち込むケース出そうやなぁ
- わかる人は、まだiOS11対応じゃないアプリには右下のSafariボタン押して連携した方が良さそうやなぁ