Lock.swift
このリファレンスガイドでは、Lockユーザーインターフェイスの実装方法と、認証ニーズに合わせてUIとして使用するためのLockの構成とカスタマイズの詳細について説明します。ただし、アクセストークンの保存、呼び出し、更新、ユーザー プロファイル情報の取得など、Auth0とSwiftでさらに多くのことを行う方法を学習したい場合は、Auth0.swift SDKを確認してください。または、Swiftクイックスタートを参照して、完全な例を確認し、Lockをインターフェイスとして使用する場合とカスタムインターフェイスを使用する場合の両方のオプションを確認してください。
GitHubの Lock.swiftリポジトリを確認してください。
要件
iOS 9+
Xcode 11.4+ / 12.x
Swift 4.x / 5.x
インストール
Cocoapods
Cocoapodsを使用している場合は、Podfile
に次の行を追加します。
pod 'Lock', '~> 2.0'
それからpod install
を実行します。CocoaPodsの詳細は、公式ドキュメントを確認してください。
Carthage
Carthageを使用している場合は、Cartfile
に次の行を追加します。
github "auth0/Lock.swift" ~> 2.0
次に、carthage bootstrap
を実行します。Carthageの使用に関する詳細は、公式のドキュメンテーションを確認してください。
SPM
Swift Package Managerを使用している場合は、Xcodeで次のメニュー項目を開きます。
[File(ファイル)] > [Swift Packages] > [Add Package Dependency(パッケージ依存関係の追加)]...
パッケージリポジトリの選択プロンプトで、次のURLを追加します。
https://github.com/auth0/Lock.swift.git
次に、[Next(次へ)]を押して残りのステップを完了します。
セットアップ
アプリケーションとの統合
アプリケーションがURLを開くように要求されたときに、Lockに通知する必要があります。これは、AppDelegate
ファイルで行うことができます。
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
return Lock.resumeAuth(url, options: options)
}
Was this helpful?
Lockのインポート
必要な場所にLockをインポートする
lockのインポート
Auth0資格情報
Lock を使用するには、Auth0 Dashboardのアプリケーション設定で確認できるAuth0クライアント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>{yourClientId}</string>
<key>Domain</key>
<string>{yourDomain}</string>
</dict>
</plist>
Was this helpful?
Lock Classicの実装
Lock Classicは、データベース、ソーシャル、およびエンタープライズ接続を使用して認証を処理します。
OIDC準拠モード
このSDKはOIDC準拠モードで使用することを強く推奨しています。このモードを有効にすると、SDKはAuth0の現在の認証パイプラインを使用するように強制され、レガシーエンドポイントに到達できなくなります。デフォルトではfalse
です
.withOptions {
$0.oidcConformant = true
}
Was this helpful?
Lockを表示するには、UIViewControllerに次のスニペットを追加します。
Lock
.classic()
// withConnections, withOptions, withStyle, and so on
.withOptions {
$0.oidcConformant = true
$0.scope = "openid profile"
}
.onAuth { credentials in
// Let's save our credentials.accessToken value
}
.present(from: self)
Was this helpful?
Auth0.Swiftライブラリを使用してユーザープロファイルにアクセスする
ユーザープロファイル情報にアクセスするには、Auth0.Swift
ライブラリを使用する必要があります。
Auth0
.authentication()
.userInfo(withAccessToken: accessToken)
.start { result in
switch result {
case .success(let profile):
print("User Profile: \(profile)")
case .failure(let error):
print("Failed with \(error)")
}
}
Was this helpful?
Auth0.Swiftライブラリのドキュメントで、その使用方法の詳細を確認してください。
接続の指定
Lockは、アプリケーション用に構成された接続を自動的に読み込みます。デフォルトの動作をオーバーライドする場合は、認証オプションとしてユーザーに表示する接続を手動で指定できます。これは、メソッドを呼び出して、接続を指定できるクロージャを提供することで実行できます。
データベース接続の追加:
.withConnections {
connections.database(name: "Username-Password-Authentication", requiresUsername: true)
}
Was this helpful?
複数のソーシャル接続の追加:
.withConnections {
connections.social(name: "facebook", style: .Facebook)
connections.social(name: "google-oauth2", style: .Google)
}
Was this helpful?
スタイル設定とカスタマイズ
Lockには、withStyle
を使用して独自のブランド アイデンティティをLockに適用するのに役立つ多くのスタイル設定オプションが用意されています。たとえば、Lockウィジェットのプライマリカラーとヘッダーテキストを変更するには:
タイトル、ロゴ、プライマリカラーをカスタマイズします
.withStyle {
$0.title = "Company LLC"
$0.logo = LazyImage(named: "company_logo")
$0.primaryColor = UIColor(red: 0.6784, green: 0.5412, blue: 0.7333, alpha: 1.0)
}
Was this helpful?
アプリのLockの外観を変更するためのスタイル設定オプションの完全なセットについては、カスタマイズガイドを参照してください。
構成オプション
Lockの動作を構成するためのオプションは多数あります。以下は、Lockを閉じられるように設定し、ユーザー名のみ(メールは不可)に制限し、ログイン画面とパスワードのリセット画面のみを表示するように構成した例です。
Lock
.classic()
.withOptions {
$0.closable = true
$0.usernameStyle = [.Username]
$0.allow = [.Login, .ResetPassword]
}
Was this helpful?
アプリのLock動作を変更するための動作設定オプションの完全なセットについては、構成ガイドを参照してください。
パスワードマネージャーのサポート
デフォルトでは、1Passwordを使用したパスワードマネージャーのサポートは、データベース接続に対して有効になっています。1Passwordのサポートでは、ログイン画面とサインアップ画面にオプションが表示されるように、ユーザーが1Passwordアプリをインストールしている必要があります。passwordManagerのenabledプロパティを使用して、1Passwordサポートを無効にすることができます。
.withOptions {
$0.passwordManager.enabled = false
}
Was this helpful?
デフォルトでは、appIdentifier
はアプリのバンドル ID に設定され、displayName
はアプリの表示名に設定されます。これらは次のようにカスタマイズできます。
.withOptions {
$0.passwordManager.appIdentifier = "www.myapp.com"
$0.passwordManager.displayName = "My App"
}
Was this helpful?
アプリのinfo.plist
に以下を追加する必要があります。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>org-appextension-feature-password-management</string>
</array>
Was this helpful?