> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ネイティブアプリに Sign In with Apple によるログイン機能を追加する方法を学びます。

# ネイティブ iOS アプリに Sign In with Apple を追加する

ネイティブ iOS アプリケーションに Sign In with Apple を使った認証機能を追加できます。実装の詳細については、Auth0 の [iOS Swift - Sign In with Apple Quickstart](/docs/ja-jp/quickstart/native/ios-swift) を試すことができます。

<div id="how-it-works">
  ## 仕組み
</div>

ネイティブアプリでは、Sign in with Apple のログインフローは次のように動作します。

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/I7xtPQoqoAFiHQiT2p7p5/8646a5231491dfbe64bd6a825ccc8ce7/apple-siwa-authn-flow.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=0a45412c8d449962db4d89e4c6f96e98" alt="Sign In with Apple 認証フローの図" width="1500" height="923" data-path="docs/images/cdy7uua7fh8z/I7xtPQoqoAFiHQiT2p7p5/8646a5231491dfbe64bd6a825ccc8ce7/apple-siwa-authn-flow.png" />
</Frame>

* **Steps 1 & 2**: ユーザーは iOS デバイス上で Apple の SDK を使って認証を行い、レスポンスで認可コードを受け取ります。アプリを離れてブラウザーでログインする必要はありません。

  <Warning>
    nonce は使用しないでください。使用すると、ステップ 4 で Apple へのリクエストが失敗し、Auth0 はユーザーに 400 エラー「Error from Apple connection.」を返します。
  </Warning>
* **Step 3**: アプリケーションは Auth0 の `/oauth/token` エンドポイントを呼び出し、Apple の認可コードを Auth0 のトークンと交換します。
* **Step 4 & 5**: Auth0 プラットフォームは、認可コードを Apple に送ってトークンと交換します。Auth0 はそのトークンを検証し、トークン内のクレームを使ってユーザーのアイデンティティを構築します。
* **Step 6**: Auth0 はユーザープロファイルを保存し、ルールを実行して認可を行った後、要求に応じて Auth0 の <Tooltip tip="Access Token: API へのアクセスに使用される認可資格情報で、不透明な文字列または JWT の形式を取ります。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=access+tokens">アクセストークン</Tooltip> (<Tooltip tip="Refresh Token: ユーザーに再度ログインを求めることなく、新しい Access Token を取得するために使用されるトークンです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=refresh+tokens">リフレッシュトークン</Tooltip> と <Tooltip tip="Refresh Token: ユーザーに再度ログインを求めることなく、新しい Access Token を取得するために使用されるトークンです。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=ID+tokens">ID トークン</Tooltip>) を発行します。これらのトークンは、API を保護し、Auth0 で管理されるユーザーに使用されます。

<div id="prerequisites">
  ## 前提条件
</div>

Auth0 で ネイティブアプリ向けに Sign In with Apple を設定する前に、次の要件を満たしている必要があります。

* [Apple Developer](https://developer.apple.com/programs/) アカウント (Apple の有料アカウント) を持っていること。 ([iOS Developer University Program](https://developer.apple.com/support/compare-memberships/) に参加している場合を除き、無料トライアルはありません。)
* まだ完了していない場合は、[Apple Developer Portal でアプリを登録](https://marketplace.auth0.com/integrations/apple-social-connection) していること。<Tooltip tip="Auth0 Dashboard: サービスを設定するための Auth0 の主要製品。" cta="用語集を見る" href="/docs/ja-jp/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> のアプリケーションの接続設定で使用するため、次の ID とキーを控えておいてください。

  * App ID
  * Apple Team ID
  * Client Secret Signing Key
  * Key ID
* クラシックログインを使用している場合、またはアプリケーションに `Lock.js` を埋め込んでいる場合は、`Lock.js` バージョン 11.16 以降を使用していることを確認してください。

<div id="configure-and-enable-the-connection-in-auth0">
  ## Auth0 で接続を設定して有効にする
</div>

Apple Developer アカウントから必要な資格情報を取得したら、Auth0 でアプリケーションのクライアント設定と接続設定を構成します。

1. [Auth0 Dashboard > アプリケーション > アプリケーション](https://manage.auth0.com/#/applications) に移動し、アプリケーションを選択して、歯車アイコンから設定ページを表示します。
2. ページ下部で **Show Advanced Settings** を選択し、次に **Device Settings** 表示を選択します。**Native Social Login** の **Enable Sign In with Apple** トグルを有効にします。

   <Frame>
     <img src="https://mintcdn.com/translations/Dcx0M11uuptU53TX/docs/images/cdy7uua7fh8z/2xkQ13r9yCb4GBZdeczZjJ/5bc57b22a0bad292bc9ad28b4884b2b6/Native_App_-_Device_Settings_-_English.png?fit=max&auto=format&n=Dcx0M11uuptU53TX&q=85&s=171d09e910b437e346c3addeb733af85" alt="アプリケーションクライアントの設定: Advanced Device Settings" width="1018" height="1169" data-path="docs/images/cdy7uua7fh8z/2xkQ13r9yCb4GBZdeczZjJ/5bc57b22a0bad292bc9ad28b4884b2b6/Native_App_-_Device_Settings_-_English.png" />
   </Frame>
3. **iOS** の **App ID** フィールドに、ネイティブアプリの App ID/Bundle Identifier を入力します。
4. [Auth0 Dashboard > Authentication > Social](https://manage.auth0.com/#/connections/social) に移動し、**Create Connection** を選択します。
5. **Apple** 接続を選択して同意します。
6. **設定** タブで、次のフィールドに入力します。

   * **Apple Team ID**
   * **Client Secret Signing Key**
   * **Key ID**

     <Frame>
       <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3mTTVYnrwbVYnUx5Mzy0V9/0ab8174a812908c9290663d3d9d05286/dashboard-connections-social-create_enter-details_apple.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=882064d8c3bf80f3ffabf26f8bdab1e2" alt="Apple ソーシャル接続の設定" width="1404" height="1416" data-path="docs/images/cdy7uua7fh8z/3mTTVYnrwbVYnUx5Mzy0V9/0ab8174a812908c9290663d3d9d05286/dashboard-connections-social-create_enter-details_apple.png" />
     </Frame>
7. **アプリケーション** 表示を選択して、この接続をアプリケーションで有効にします。
8. **Save** をクリックします。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  ネイティブアプリはブラウザーからテストできません。つまり、Apple 接続の **Try Connection** ボタンは、Web ベースのフローのテストにのみ使用されます。
</Callout>

<div id="logout">
  ## ログアウト
</div>

ネイティブ iOS のログイン実装では標準的なブラウザベースのフローを使用しないため、アプリケーションの管理者はログアウトも適切に実行する必要があります。アプリケーションでログアウトが必要な場合は、次の対応を行ってください。

* [Auth0 のリフレッシュトークンを取り消す](https://auth0.com/docs/api/authentication#revoke-refresh-token)
* iCloud Keychain に保存されている Auth0 のリフレッシュトークンを削除する
* iCloud Keychain に保存されている Apple のユーザー識別子を削除する
  また、ログアウトはユーザーの操作 (たとえば「ログアウト」ボタンのクリック) によって発生する場合もあれば、ユーザーが対象のアプリへのアクセスを取り消すことで発生する場合もある点に注意してください。後者は、ネイティブの [ASAuthorizationAppleIDProvider.getCredentialState](https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidprovider/3175423-getcredentialstate) メソッドで確認できます。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Apple の IdP には、要求したスコープ (メールアドレス、名、姓など) が **最初の** 応答時の ID トークン でしか返されないという注意点があります。ユーザーの削除のような、より破壊的なログアウト方法を取ると、プロファイル情報が失われる可能性があり、その場合はエンドユーザーがアプリの認可を解除してから再度認可する必要があります。
</Callout>

<div id="learn-more">
  ## 詳しく見る
</div>

* [Rate Limit Policy](/docs/ja-jp/troubleshoot/customer-support/operational-policies/rate-limit-policy)
