Open6
【iOS】Appleでサインインの実装メモ(サーバーサイドを含む)
概要
- iOSモバイルクライアントとRailsサーバーを用いたアプリで、Appleでサインインの機能を実装する
全体像について
-
こちらの記事がサーバー実装まで含めて非常にわかりやすい。
もし記事が非公開になってしまったときのためにコアな画像だけお借りして掲載します
データの流れ
- モバイルクライアントでAppleでサインインを行い、
authentication_code
を取得する - 取得した
authentication_code
を(自分のアプリの)サーバーに送る。 - (自分のアプリの)サーバーは、Appleのサーバーにclient_secretなどの情報とともに
authorization_code
を送信し、id_token
を受け取る - 受け取った
id_token
をverifyする。この際にAppleのAPIから取得したIWKを使用する -
id_token
のpayloadに含まれるsubがAppleでサインインにおけるuid、その他emailなども含まれている。
Appleでサインインにおけるクライアント実装
- 公式のサンプルアプリJuiceを見ると簡単に分かる
- 以下の用にauthorization_codeを取得し、自分のアプリのサーバーに対して送信する
String(data: appleIDCredential.authorizationCode!, encoding: .utf8)
サーバーの準備
authorization_codeからid_tokenを取得するAPIを叩く前に、まずclient_secretを作成する必要がある
- client_secretの作成方法について(公式)
- その際に利用するprivate keyの作成方法について(公式)
該当部分
Apple Developer > Certificates, Identifiers & Profiles > Keysから作成
- AuthKey_xxx(key id)xxx.p8というキーが作成される
client_secretを作成する
サーバーでの検証
(以下はチームでやったため自分で動作を手触りを持って理解していないので参考までに)
authorization_codeからid_tokenを受け取るAPIを叩く
受け取ったid_tokenをdecodeする
そのほか参考