LoginSignup
1
1

More than 3 years have passed since last update.

SignInWithAppleに対応する

Last updated at Posted at 2020-05-24

SignInWithAppleとは

2019年のWWDCで発表されたAppleが開発した新しい認証方法です。
新規のアプリ申請では対応必須となっており、アップデート申請も7月から対応必須となります。
対応しない場合はリジェクト対象となりますので忘れずに対応しましょう。

準備編

AppleDeveloperでの設定

AppleDeveloperのサイトにアクセスして以下の設定をします。
Certificates, Identifiers & Profiles→Identifiers→対象のアプリ→CapabilitiesからSigninWithAppleにチェック
_2020-05-19_22.01.29.png

Xcodeの設定

次にXcodeのCapabilitiesにSignInWithAppleを下の手順で追加します。
TARGET→Signing&Capabilities→Capabilityを選択してSigninWithAppleを追加
_2020-05-19_22.05.02.png
_2020-05-19_22.04.20.png

実装編

ViewControllerの実装

ボタンイベント等で以下の処理を実装して認証画面を表示します。

let provider = ASAuthorizationAppleIDProvider()
let request = provider.createRequest()
request.requestedScopes = [.email, .fullName]
request.nonce = nonce
let controller = ASAuthorizationController(authorizationRequests: [request])
controller.delegate = self
controller.presentationContextProvider = self
controller.performRequests()

認証の実装

ログイン画面のViewControllerにASAuthorizationControllerDelegateASAuthorizationControllerPresentationContextProvidingを実装します。

func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
    // 認証成功時の処理
}

func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
    // 認証失敗時の処理
}

func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
    // コンテンツを表示するWindowを指定
    // UIViewControllerのwindowを指定する
  return self.view.window!
}

状態監視の実装

AppDelegateのapplicationDidBecomeActive関数で以下のチェック処理を実装します。

let provider = ASAuthorizationAppleIDProvider()
    provider.getCredentialState(forUserID: appleId) { state, error in
        switch state {
        // 認証が無効になった場合
        case .revoked, .notFound:
            // サービスのログアウト処理
        default:
            break
        }
    }
}

実装してみた感想

今回初めて実装してみましたがかなり簡単に実装できて実装もシンプルなのでかなり良い印象でした。
ただ公式ドキュメントが少しわかりにくいのでそのへん改善して欲しいなと思いました。

参考サイト

AppleDeveloper
iOSでAppleを使用して認証する
全く知らない人のためのSign in with Apple

1
1
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
1