このガイドは、Auth0.swift SDKを使って、iOSやmacOSアプリで認証の追加とユーザプロファイル情報へのにアクセスを行う方法について説明します。このクイックスタートを使用するには、以下の手順に従います:
- Auth0の無料アカウントにサインアップするか、Auth0にログインします。
-
統合したいiOSまたはmacOSのアプリを準備します。または、ログインした後に、サンプルアプリを表示してダウンロードすることもできます。
1
Auth0を構成する
Auth0のサービスを利用するには、Auth0 Dashboadに設定済みのアプリケーションが必要です。Auth0アプリケーションは、開発中のアプリに対してどのように認証が動作して欲しいかを構成する場所です。Auth0アプリケーションを構成する
対話型のセレクターを使ってAuth0アプリケーションを新規作成するか、既存のネイティブ のAuth0アプリケーションを選択します。Auth0のすべてのアプリケーションには英数字からなる一意のクライアントIDが割り当てられており、アプリがSDKを通じてAuth0 APIを呼び出す際に使用されます。このクイックスタートを使って構成されたすべての設定は、DashboardのAuth0アプリケーションを自動更新します。今後、アプリケーションの管理もDashboardで行えます。完了済みの構成を見てみたい場合は、サンプルアプリをご覧ください。Callback URLとログアウトURLを構成する
Auth0はリダイレクトでユーザーをアプリに戻すため、Callback URLとログアウトURLを呼び出します。Auth0は、ユーザーを認証した後にCallback URLを呼び出し、セッションのクッキーを削除した後にログアウトURLを呼び出します。Callback URLとログインURLを設定しないと、ユーザーはアプリにログインやログアウトが行えなくなり、アプリにエラーが発生します。アプリのプラットフォームに応じて、以下のCallback URL とログアウトURL を追加してください。カスタムドメインがある場合は、Auth0テナントのドメインに代わってそちらを使用します。iOS 17.4以降とmacOS 14.4以降では、ユニバーサルリンクをCallback URLおよびログアウトURLとして使用できます。有効になっている場合、古いバージョンのiOS/macOSでは、Auth0.swiftはフォールバックとしてカスタムURLスキームを使用します。この機能にはXcode 15.3以降と有料のApple Developerアカウントが必要です。iOS
macOS
たとえば、iOSのバンドル識別子がcom.example.MyApp
でAuth0ドメインがexample.us.auth0.com
の場合には、次の値になります:関連ドメインを構成する
この手順では有料のApple Developerアカウントが必要になります。Callback URLおよびログアウトURLとしてユニバーサルリンクを使用する必要があります。代わりにカスタムURLスキームを使用する場合はこの手順をスキップしてください。チームIDとバンドル識別子を構成する
Auth0アプリケーションの設定ページに移動して最後までスクロールし、 [Advanced Settings(詳細設定)]>[Device Settings(デバイス設定)] を開きます。[iOS] セクションで**[Team ID(チームID)]** にApple Team IDを、[App ID(アプリID)] にアプリのバンドルIDを設定します。これで、アプリがAuth0テナントのapple-app-site-association
ファイルに追加されます。関連ドメインの機能を追加する
Xcodeで、アプリのターゲット設定の**[Signing & Capabilities(署名と機能)]** タブに移動し、[+ Capability(+機能)] ボタンを押します。それから**[Associated Domains(関連ドメイン)]** を選択します。次に、以下の エントリーを**[Associated Domains(関連ドメイン)]** の下に追加します:カスタムドメインがある場合は、Auth0テナントのドメインではなくそちらを使用してください。関連ドメインが動作するためには、iOSシミュレーター用に構築されている場合でも 、アプリが自分のチーム証明書で署名されている必要があります。Apple Teamには必ず、Auth0アプリケーションの設定ページで構成されたチームIDのものを使用してください。2SDKをインストールする
Swift Package Managerを使用する
Xcodeで以下のメニュー項目を開きます:[File(ファイル)] > [Add Package Dependencies…(パッケージの依存関係を追加する…)][Search or Enter Package URL(パッケージURLを検索または入力)] 検索ボックスに次のURLを入力します:それから依存ルールを選択して**[Add Package(パッケージを追加)]** を押します。SPMの詳細については、公式ドキュメントを確認してください。CocoaPodsを使用する
以下のラインをPodfile
に追加します:それからpod install
を実行します。CocoaPodsの詳細は、公式ドキュメントを確認してください。Carthageを使用する
以下のラインをCartfile
に追加します:それからcarthage bootstrap --use-xcframeworks
を実行します。Carthageの詳細については、公式ドキュメントを確認してください。3SDKを構成する
Auth0.swiftのSDKにはAuth0domain とClient ID が必要です。これらの値はAuth0アプリケーションの設定ページで確認できます- domain :Auth0テナントのドメインです。カスタムドメインがある場合は、Auth0テナントのドメインではなくそちらを使用してください。
- クライアントID :このクイックスタートで前にセットアップした、Auth0アプリケーションの英数字からなる一意のIDです。
Auth0.plist
という名前のplist
ファイルを作成します。SDKはプログラムコードによって構成することも可能です。詳細はREADMEをご覧ください。チェックポイント
Auth0.swift SDKの構成を完了しました。アプリを実行して、SDKに関連したエラーを出していないことを確認します。4アプリケーションにログインを追加する
ログインページを提示したいファイルにAuth0
モジュールをインポートします。それからログイン ボタンのアクションでユニバーサルログインページを提示します。コールバックに基づいたAPIの代わりにasync/awaitまたはCombineを使用できます。詳細はREADMEをご覧ください。チェックポイント
ログインボタンを押して次の点を確認します: アラートボックスが表示され、同意を求める。 [Continue(続行)]を選択するとSafariモーダルでユニバーサルログインページが開く。 ユーザー名とパスワード、またはソーシャルプロバイダーを使って、ログインまたはサインアップできる。 その後、Safariモーダルが自動的に閉じる。5アプリケーションにログアウトを追加する
アプリにログインできるようになったら、ログアウトする方法が必要です。ログアウト ボタンのアクションでclearSession()
メソッドを呼び出し、ユニバーサルログインセッションのクッキーを消去します。チェックポイント
ログアウトボタンを押して次の点を確認します: アラートボックスが表示され、同意を求める。 [Continue(続行)]を選択するとSafariモーダルでページが開く。 その直後にSafariモーダルが自動的に閉じる。6ユーザープロファイル情報にアクセスする
ログイン後に得るCredentials
インスタンスにはIDトークンが含まれます。IDトークンは、ログインしたユーザーに関連するプロファイル情報(メールアドレスやプロフィール写真など)を含みます。これらの詳細情報はアプリのユーザーインターフェイスをパーソナライズするために使用できます。Auth0.swiftのSDKには、IDトークンのようなJWTをデコードするためのユーティリティが含まれています。ユーザープロファイル情報にアクセスしたいファイルへJWTDecode
モジュールをインポートすることで開始します。それから、decode(jwt:)
メソッドを使ってIDトークンをデコードし、そこに含まれるクレームにアクセスします。最新のユーザー情報はuserInfo(withAccessToken:)
メソッドで取得できます。詳細はEXAMPLESをご覧ください。チェックポイント
ログイン後にemail、picture、その他すべてのクレームにアクセスできることを確認します。
次のステップ
成功です!ここまで来れば、アプリケーションにログイン、ログアウト、ユーザープロファイル情報が備わっているはずです。これでクイックスタートチュートリアルは終了ですが、機能はまだまだたくさんあります。Auth0でできることについて詳しくは、以下をご覧ください。- Auth0 Dashboard - Auth0のテナントやアプリケーションを構成して管理する方法について説明します
- Auth0.swift SDK - このチュートリアルで使用されているSDKをより詳しく説明します
- Auth0 Marketplace - Auth0の機能性を拡張できる各種の統合を見つけられます