Open6

【iOS】Appleでサインインの実装メモ(サーバーサイドを含む)

だーら(Flamers / Memotia)だーら(Flamers / Memotia)

全体像について

  • こちらの記事がサーバー実装まで含めて非常にわかりやすい。

    もし記事が非公開になってしまったときのためにコアな画像だけお借りして掲載します

データの流れ

  • モバイルクライアントで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なども含まれている。
だーら(Flamers / Memotia)だーら(Flamers / Memotia)

サーバーの準備

authorization_codeからid_tokenを取得するAPIを叩く前に、まずclient_secretを作成する必要がある


Apple Developer > Certificates, Identifiers & Profiles > Keysから作成

  • AuthKey_xxx(key id)xxx.p8というキーが作成される

client_secretを作成する

だーら(Flamers / Memotia)だーら(Flamers / Memotia)

サーバーでの検証

(以下はチームでやったため自分で動作を手触りを持って理解していないので参考までに)

authorization_codeからid_tokenを受け取るAPIを叩く

受け取ったid_tokenをdecodeする