LoginSignup
1
3

More than 5 years have passed since last update.

iOSアプリで特定のSDKを使わずにOAuth認証をiOSのみで完結させたい場合

Last updated at Posted at 2017-05-25

アプリの人からSDK無いサービスの場合にOAuthどうしようという相談を受けて解決したのでメモ
問題はwebでのOAuthであればcallbackURLに普通にアクセスできるが、iOSアプリだとサーバーではないので戻りが取れないという事

解決手順(雑)

  1. 認証画面開くブラウザをsafariではなくweb viewに設定する
  2. oauthAPIに対してリクエストを送信する
  3. ユーザが特定(Twitter,GitHub)のoauthページでパスワード入力などで認証を行う
  4. 本来はここでサービスに登録したcallbackUrlにリダイレクトするがweb view側でリダイレクトを検知した場合、その処理をキャンセルしリダイレクトしようとしたURLを取得する
  5. 大抵はcallbackURLの中にcodeやtokenというパラメータが付与されているのでそのコードを使ってaccess_tokenを取得するAPIにリクエストする

もっと良い解決方法があるのかもしれない
web viewじゃなくてアプリ内safariの方法とかあったりするのかどうなのか
SDKが提供されているサービスは素直にそっち使ったほうが良い

参考

iOSアプリにおけるOAuth連携の実装

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3