概要 iOS、macOS、tvOS、watchOS 向けの Swift SDK です。Auth0 をアプリにシームレスに統合し、ログインとログアウトの追加、認証情報の安全な保存、ユーザー情報へのアクセスを実現できます。 詳しくは GitHub リポジトリ v1 から移行する場合は、 移行ガイド を参照してください
クイックスタート : iOS / macOS アプリに Auth0.swift をゼロから統合する方法を紹介します。
サンプルアプリ : 実際に試せる、完全に動作する iOS / macOS アプリです。
使用例 : 主要な機能の使い方を説明します。
API ドキュメント : コードコメントから自動生成された、利用可能なすべての機能を説明するドキュメントです。
FAQ : Auth0.swift に関するよくある質問への回答をまとめています。
Auth0 ドキュメント: ドキュメントサイトで、Auth0 の詳細を確認してください。
iOS 13.0+ / macOS 11.0+ / tvOS 13.0+ / watchOS 7.0+
Xcode 14.x
Swift 5.7+
Xcode、Swift、および各プラットフォームのバージョンのサポート終了が破壊的変更 と見なされないタイミングについては、Support Policy を確認してください。
Xcode で、次のメニュー項目を開きます。
File > Add Packages…
Search or Enter Package URL 検索ボックスに、この URL を入力します。
https://github.com/auth0/Auth0.swift
次に、依存関係ルールを選択して、Add Package を押します。
次の行をPodfileに追加します。
次に、pod install を実行します。
Cartfile に次の行を追加します。
github "auth0/Auth0.swift" ~> 2.0
次に、carthage bootstrap --use-xcframeworks を実行します。
Auth0 Dashboard に移動し、新しい Native アプリケーションを作成します。
Auth0.swift が Auth0 と通信するには、Auth0 アプリケーションの クライアントID と ドメイン が必要です。これらの詳細は、Auth0 アプリケーションの Settings ページで確認できます。カスタムドメイン を使用している場合は、Settings ページの値ではなく、カスタムドメイン の値を使用してください。
plist を使用してクライアントIDとドメインを設定する
次の内容で、アプリバンドル内に Auth0.plist という名前の plist ファイルを作成します。
<? xml version = "1.0" encoding = "UTF-8" ?>
<! DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
< plist version = "1.0" >
< dict >
< key > ClientId </ key >
< string > {yourAuth0ClientId} </ string >
< key > Domain </ key >
< string > {yourAuth0Domain} </ string >
</ dict >
</ plist >
クライアントIDとドメインをプログラムから設定する
Web Auth を使用する場合
Auth0
. webAuth ( clientId : "{yourAuth0ClientID}" , domain : "{yourAuth0Domain}" )
// ...
Authentication API クライアントの場合
Auth0
. authentication ( clientId : "{yourAuth0ClientID}" , domain : "{yourAuth0Domain}" )
// ...
Management API クライアント (Users) 向け
Auth0
. users ( token : credentials. accessToken , domain : "{yourAuth0Domain}" )
// ...
コールバックURLとログアウトURLは、Auth0 がアプリケーションへリダイレクトする際に使用する URL です。Auth0 はユーザーの認証後にコールバックURLを使用し、セッションクッキー を削除した後にログアウトURLを使用します。
コールバックURLとログアウトURLは改変される可能性があるため、Auth0 アプリケーションの Settings ページにある Allowed Callback URLs フィールドと Allowed Logout URLs フィールドにこれらの URL を追加する必要があります。これにより、Auth0 はそれらの URL を有効なものとして認識できるようになります。コールバックURLとログアウトURLが設定されていない場合、ユーザーはアプリケーションにログインおよびログアウトできず、エラーが発生します。
Auth0 application の Settings ページに移動し、アプリケーションのプラットフォームに応じて、該当する URL を Allowed Callback URLs と Allowed Logout URLs に追加してください。custom domain を使用している場合は、Settings ページの値ではなく、{yourAuth0Domain} をカスタムドメインの値に置き換えてください。
iOS
{yourBundleIdentifier} : //{yourAuth0Domain}/ios/{yourBundleIdentifier}/callback
macOS
{yourBundleIdentifier} : //{yourAuth0Domain}/macos/{yourBundleIdentifier}/callback
たとえば、iOS のバンドル識別子が com.example.MyApp で、Auth0 のドメインが example.us.auth0.com である場合、この値は次のようになります。
com.example.MyApp://example.us.auth0.com/ios/com.example.MyApp/callback
Xcode で、アプリのターゲット設定にある Info タブを開きます。URL Types セクションで + ボタンをクリックし、新しいエントリを追加します。そこで、Identifier フィールドに auth0、URL Schemes フィールドに $(PRODUCT_BUNDLE_IDENTIFIER) を入力します。
これにより、バンドル識別子がカスタムURLスキームとして登録され、コールバックURL と ログアウト URL がアプリに戻れるようになります。
Web Auth ログイン (iOS / macOS)
ログインページを表示するファイルに Auth0 モジュールをインポートします。
次に、Login ボタンのアクションで Universal Login ページを表示するようにします。
Auth0
. webAuth ()
. start { result in
switch result {
case . success ( let credentials) :
print ( "Obtained credentials: \( credentials ) " )
case . failure ( let error) :
print ( "Failed with: \( error ) " )
}
}
do {
let credentials = try await Auth0. webAuth (). start ()
print ( "Obtained credentials: \( credentials ) " )
} catch {
print ( "Failed with: \( error ) " )
}
Auth0
. webAuth ()
. start ()
. sink ( receiveCompletion : { completion in
if case . failure ( let error) = completion {
print ( "Failed with: \( error ) " )
}
}, receiveValue : { credentials in
print ( "Obtained credentials: \( credentials ) " )
})
. store ( in : & cancellables)
Web Auth でのログアウト (iOS / macOS)
ユーザーをログアウトするには、Universal Login のセッションクッキーをクリアし、その後アプリケーションからユーザーの認証情報を削除します。
ログアウト ボタンのアクションで clearSession() メソッドを呼び出します。セッションクッキーがクリアされたら、ユーザーの認証情報を削除 します。
Auth0
. webAuth ()
. clearSession { result in
switch result {
case . success :
print ( "Session cookie cleared" )
// credentialsを削除する
case . failure ( let error) :
print ( "Failed with: \( error ) " )
}
}
do {
try await Auth0. webAuth (). clearSession ()
print ( "Session cookie cleared" )
// credentialsを削除する
} catch {
print ( "Failed with: \( error ) " )
}
Auth0
. webAuth ()
. clearSession ()
. sink ( receiveCompletion : { completion in
switch completion {
case . finished :
print ( "Session cookie cleared" )
// credentialsを削除する
case . failure ( let error) :
print ( "Failed with: \( error ) " )
}
}, receiveValue : {})
. store ( in : & cancellables)
SSO アラートボックス (iOS / macOS)
Web Auth の使用時にデフォルトで表示されるアラートボックスの詳細については、FAQ を参照してください。
主要な機能については、Examples を参照してください。