Skip to main content
このリファレンスガイドでは、Lock ユーザーインターフェースの実装方法と、認証用 UI として利用するための Lock の設定およびカスタマイズの詳細を説明します。一方、の保存、呼び出し、更新、ユーザープロファイル情報の取得など、Auth0 と Swift でさらに多くのことを行う方法については、Auth0.swift SDK を参照してください。また、Swift Quickstart では、Lock をインターフェースとして使用する場合と、カスタムインターフェースを使用する場合の両方について、完全な例を順を追って確認できます。 GitHub の Lock.swift repository も参照してください。

要件

  • 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… Choose Package Repository プロンプトに次の URL を追加します。 https://github.com/auth0/Lock.swift.git 次に、Next をクリックして残りの手順を完了します。
SPM の詳細については、公式ドキュメントを参照してください。

設定

アプリケーションに統合する

アプリケーションが URL を開くよう要求された際に、Lock に通知する必要があります。これは AppDelegate ファイルで行えます。
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  return Lock.resumeAuth(url, options: options)
}

Lock をインポートする

Lock を使用する場所でインポートします import lock

Auth0 認証情報

Lock を使用するには、Auth0 の とドメインを指定する必要があります。これらは Auth0 Dashboard のアプリケーション設定にあります。 アプリケーションバンドルには、Auth0.plist という名前の plist ファイルを追加し、認証情報を次の形式で含めることができます。

Lock Classic の実装

Lock Classic は、データベース、ソーシャル、エンタープライズの各接続を使用した認証に対応しています。

OIDC 準拠モード

この SDK は、OIDC 準拠モードで使用することを強く推奨します。このモードを有効にすると、SDK は Auth0’s 現在の認証パイプラインを使用するようになり、レガシーエンドポイントにはアクセスしなくなります。デフォルト値は false です
.withOptions {
    $0.oidcConformant = true
}
Lock を表示するには、次のスニペットを UIViewController 内に追加します。
Lock
    .classic()
    // withConnections、withOptions、withStyle など
    .withOptions {
      $0.oidcConformant = true
      $0.scope = "openid profile"
    }
    .onAuth { credentials in
      // credentials.accessToken の値を保存します
    }
    .present(from: self)

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)")
       }
   }
詳しい使用方法については、Auth0.Swift ライブラリのドキュメントを参照してください。

接続を指定する

Lock は、アプリケーションに設定されている接続を自動的に読み込みます。既定の動作を変更する場合は、認証オプションとしてユーザーに表示する接続を手動で指定できます。これを行うには、メソッドを呼び出して、接続を指定するクロージャを渡します。 データベース接続を追加する場合:
.withConnections {
    connections.database(name: "Username-Password-Authentication", requiresUsername: true)
}
複数のソーシャル接続を追加する:
.withConnections {
    connections.social(name: "facebook", style: .Facebook)
    connections.social(name: "google-oauth2", style: .Google)
}

スタイル設定とカスタマイズ

Lock には、withStyle を使用して独自のブランドアイデンティティを反映できるように、多くのスタイル設定オプションが用意されています。たとえば、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)
}
アプリ向け Lock の外観を変更するためのスタイル設定オプションは、Customization Guideで一通り確認できます。

設定オプション

Lock の動作を設定するためのオプションは数多くあります。以下は、Lock を閉じられるようにし、username のみを許可し (メールアドレスは不可) 、表示する画面を Login と Reset Password のみに限定する設定例です。
Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }
アプリでの Lock の動作を変更するための設定オプションの完全な一覧は、Configuration Guideを参照してください。

パスワードマネージャーのサポート

既定では、データベース接続で 1Password によるパスワードマネージャーのサポートが有効になっています。1Password のオプションをログイン画面やサインアップ画面に表示するには、ユーザーの端末に 1Password アプリがインストールされている必要があります。1Password のサポートは、passwordManager の enabled プロパティで無効にできます。
.withOptions {
    $0.passwordManager.enabled = false
}
デフォルトでは、appIdentifier にはアプリのバンドル識別子が、displayName にはアプリの表示名が設定されます。これらは次のようにカスタマイズできます。
.withOptions {
    $0.passwordManager.appIdentifier = "www.myapp.com"
    $0.passwordManager.displayName = "My App"
}
アプリの info.plist に次の内容を追加する必要があります:
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>org-appextension-feature-password-management</string>
</array>

詳細情報