Swiftで大学のポータルにログインしたい

大学のポータルにログインしたい

大学のポータルに自作のiOSアプリでログインがしたかった。 大学はGoogleのOAuthを使っている。

WebViewか何かに埋め込んで、ログインすればいいと思いきや、WebViewでGoogleにログインすることは許されていなかった。(セキュリティ的な理由かな?) そのため、Safariを使うか、ライブラリを使う必要がある。

SwiftでOAuth認証する方法

Swiftで認証系のライブラリはいくつかある。

Googleが出しているものだと、

  • GoogleSignIn
  • GTMAppAuth

があるが、Appleが出している

  • SFAuthenticationSession

これが一番簡単な気がする。

ダメだった

そもそもOAuthの知識がなかったに尽きるが、GoogleOAuth認証されたあとRedirectURLに自分のアプリのURL Schemaを指定させなければならない。自分のWebサービスならGoogle Cloud Platformのconsoleで設定すればいいが、そんなことはできない。

無理やり解決

Safari(SFSafariViewController)を埋め込み、ログインしたら共有ボタン(Safari画面下部にある四角に矢印が生えてるボタン)を押してもらい、Safariから自分のアプリにURLをもらう。

この仕様がいいことなのかはさておき、ポータルはログイン直後にURLのクエリパラメータにトークンの値が書いてあるため、そこからトークンを拾います...

なんだかグレーそうなので、もちろんアプリの公開はしません。