Swiftで大学のポータルにログインしたい
大学のポータルにログインしたい
大学のポータルに自作のiOSアプリでログインがしたかった。 大学はGoogleのOAuthを使っている。
WebViewか何かに埋め込んで、ログインすればいいと思いきや、WebViewでGoogleにログインすることは許されていなかった。(セキュリティ的な理由かな?) そのため、Safariを使うか、ライブラリを使う必要がある。
SwiftでOAuth認証する方法
Swiftで認証系のライブラリはいくつかある。
Googleが出しているものだと、
- GoogleSignIn
- GTMAppAuth
があるが、Appleが出している
- SFAuthenticationSession
これが一番簡単な気がする。
ダメだった
そもそもOAuthの知識がなかったに尽きるが、GoogleのOAuth認証されたあとRedirectURLに自分のアプリのURL Schemaを指定させなければならない。自分のWebサービスならGoogle Cloud Platformのconsoleで設定すればいいが、そんなことはできない。
無理やり解決
Safari(SFSafariViewController)を埋め込み、ログインしたら共有ボタン(Safari画面下部にある四角に矢印が生えてるボタン)を押してもらい、Safariから自分のアプリにURLをもらう。
この仕様がいいことなのかはさておき、ポータルはログイン直後にURLのクエリパラメータにトークンの値が書いてあるため、そこからトークンを拾います...
なんだかグレーそうなので、もちろんアプリの公開はしません。