> ## 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.

> Lock.Swift で利用できる動作設定オプション

# Lock.swift: 設定オプション

以下に、Lock の動作を設定するための各種オプションを示します。さらに、[スタイルのカスタマイズオプション](/ja/docs/libraries/lock-swift/lock-swift-customization) のページでは、Lock の外観やスタイルを変更するためのオプションも多数用意されています。

<div id="configuring-locks-behavior">
  ## Lock の動作を設定する
</div>

`withOptions` を使用して、Lock の初期化に設定オプションを追加できます。

```swift lines theme={null}
Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }
  .present(from: self)
```

<div id="behavior-options">
  ## 動作設定
</div>

<div id="closable">
  ### closable
</div>

ユーザーが Lock を閉じられるようにします。デフォルトは `false` です。

```swift lines theme={null}
.withOptions {
  $0.closable = true
}
```

<div id="scope">
  ### scope
</div>

認証に使用するスコープです。デフォルトは `openid` です。これにより、**<Tooltip tip="アクセストークン: API へのアクセスに使用される、不透明な文字列または JWT 形式の認可資格情報。" cta="用語集を表示" href="/ja/docs/glossary?term=Access+Token">アクセストークン</Tooltip>** だけでなく、ユーザー情報を含む <Tooltip tip="IDトークン: リソースへのアクセスではなく、クライアント自体を対象とした資格情報。" cta="用語集を表示" href="/ja/docs/glossary?term=JSON+Web+Token">JSON Web Token</Tooltip> (JWT) である **<Tooltip tip="IDトークン: リソースへのアクセスではなく、クライアント自体を対象とした資格情報。" cta="用語集を表示" href="/ja/docs/glossary?term=ID+Token">IDトークン</Tooltip>** も返されます。認証スコープの詳細については、[Scopes](/ja/docs/get-started/apis/scopes) のドキュメントを参照してください。

```swift lines theme={null}
.withOptions {
  $0.scope = "openid name email picture"
}
```

<div id="refresh-tokens">
  #### リフレッシュトークン
</div>

Lock オプションで `offline_access` スコープを指定すると、access\_token および id\_token とあわせて [リフレッシュトークン](/ja/docs/secure/tokens/refresh-tokens) を返せるようになります。<Tooltip tip="リフレッシュトークン: ユーザーに再度ログインを求めることなく、新しいアクセストークンを取得するために使用されるトークンです。" cta="用語集を見る" href="/ja/docs/glossary?term=Refresh+Tokens">リフレッシュトークン</Tooltip>は保存しておき、古いアクセストークンの有効期限が切れた際に、新しいアクセストークンの取得に使用できます。Auth0 認証でリフレッシュトークンを使用する方法の詳細については、リフレッシュトークンの実装に使用する [Auth0.Swift SDK](/ja/docs/libraries/auth0-swift) のリファレンスドキュメント、または Swift 開発における Auth0 の使用例 (リフレッシュトークンの管理を含む) を包括的に示した [Swift Quickstart Guide](/ja/docs/quickstart/native/ios-swift) を参照してください。

<div id="termsofservice">
  ### termsOfService
</div>

デフォルトでは、Lock は Auth0 の利用規約とプライバシーポリシーを使用しますが、別の利用規約やポリシーにリンクするために、他の URL を指定することもできます。

```swift lines theme={null}
.withOptions {
  $0.termsOfService = "https://mycompany.com/terms"
  $0.privacyPolicy = "https://mycompany.com/privacy"
}
```

<div id="show-terms-of-service">
  ### 利用規約を表示
</div>

データベース接続では、利用規約ダイアログが表示されます。既定値は `true` です。`mustAcceptTerms` フラグが有効な場合、利用規約は常に表示されることに注意してください。

```swift lines theme={null}
.withOptions {
    $0.showTerms = true
}
```

<div id="require-users-to-accept-the-terms-of-service">
  ### ユーザーに利用規約への同意を必須にする
</div>

データベース接続では、利用規約への明示的な同意が必要です。

```swift lines theme={null}
.withOptions {
    $0.mustAcceptTerms = true
}
```

<div id="web-authentication-options">
  ## Web認証のオプション
</div>

<div id="leeway">
  ### leeway
</div>

IDトークンの検証で使用するクロックスキューです。サーバー時刻とクライアント時刻のずれを考慮し、IDトークンが有効と見なされる時間範囲を広げます。デフォルトは**60000 milliseconds** (60秒) です。

```swift lines theme={null}
.withOptions {
  $0.leeway = 30000 // 30秒
}
```

<div id="maxage">
  ### maxAge
</div>

ユーザーが最後に認証されてからの許容経過時間 (ミリ秒) 。IDトークンの検証に使用されます。設定した場合、IDトークンには認証時刻を示す `auth_time` クレームが含まれます。デフォルト値は `nil` です。

```swift lines theme={null}
.withOptions {
  $0.maxAge = 86400000 // 1日
}
```

<div id="database-options">
  ## データベースのオプション
</div>

<div id="allow">
  ### allow
</div>

アクセス可能なデータベース画面を指定します。デフォルトでは、`.Login`、`.Signup`、`.ResetPassword` など、すべての画面が有効です。

```swift lines theme={null}
.withOptions {
  $0.allow = [.Login, .ResetPassword]
}
```

<div id="initialscreen">
  ### initialScreen
</div>

ユーザーに最初に表示される画面です。既定値は `.Login` で、その他のオプションには `.Signup` と `ResetPassword` があります。

```swift lines theme={null}
.withOptions {
  $0.initialScreen = .Login
}
```

<div id="usernamestyle">
  ### usernameStyle
</div>

ログイン時に必要な識別子の種類を指定します。デフォルトでは `[.Username, .Email]` が使用されますが、`[.Username]` または `[.Email]` も指定できます。ただし、このオプションが有効なのは、[Auth0 Dashboard](https://manage.auth0.com/#/) で `requires_username` フラグを `true` に設定している場合のみです。

```swift lines theme={null}
.withOptions {
  $0.usernameStyle = [.Username]
}
```

<div id="custom-signup-fields">
  #### カスタムサインアップフィールド
</div>

サインアップ時にデフォルトで必要となる情報は、ユーザーのメールアドレスとパスワードです。必要に応じて、取得する情報を増やすことができます。ここで追加のサインアップフィールドを設定すると、それらは `user_metadata` に保存されます。詳しくは、[Metadata](/ja/docs/manage-users/user-accounts/metadata) を参照してください。なお、カスタムテキストフィールドで使用するアイコンは必ず指定する必要があります。

```swift lines theme={null}
.withOptions {
  $0.customSignupFields = [
    CustomTextField(name: "first_name", placeholder: "First Name", icon: LazyImage(name: "ic_person", bundle: Lock.bundle)),
    CustomTextField(name: "last_name", placeholder: "Last Name", icon: LazyImage(name: "ic_person", bundle: Lock.bundle))
  ]
}
```

他のバンドルのアイコンを指定することもできます。次の例のように指定します:
CustomTextField(name: "slack\_handle", placeholder: "Slack ハンドル", icon: LazyImage(name: "ic\_slack", bundle: Bundle(identifier: "CustomBundle")))

<div id="enterprise-options">
  ## エンタープライズ オプション
</div>

エンタープライズ接続に固有の設定オプションもあります。

<div id="enterpriseconnectionusingactiveauth">
  ### enterpriseConnectionUsingActiveAuth
</div>

デフォルトでは、エンタープライズ接続では Web認証 が使用されます。ただし、代わりに資格情報認証を使用し、username とパスワードの入力を求める接続を指定することもできます。

```swift lines theme={null}
.withOptions {
  $0.enterpriseConnectionUsingActiveAuth = ["enterprisedomain.com"]
}
```

<div id="activedirectoryemailasusername">
  ### activeDirectoryEmailAsUsername
</div>

認証情報認証モードで、識別子としてユーザーにメールアドレスの入力を必須とするかどうかを指定します。既定値は `false` で、その場合は代わりに username が必要です。

```swift lines theme={null}
.withOptions {
  $0.activeDirectoryEmailAsUsername = true
}
```

<div id="logging-options">
  ## ログのオプション
</div>

Lock では、ログ機能の有効/無効を簡単に切り替えられるほか、ログ関連のその他の設定も調整できます。

<div id="loglevel">
  ### logLevel
</div>

デフォルトは `.off` です。Syslog のログレベルをサポートしています。

```swift lines theme={null}
.withOptions {
  $0.logLevel = .all
}
```

<div id="loghttprequest">
  ### logHttpRequest
</div>

Auth0.swift API リクエストをログに出力するかどうかを指定します。既定値は `false` です。

```swift lines theme={null}
.withOptions {
  $0.logHttpRequest = true
}
```

<div id="loggeroutput">
  ### loggerOutput
</div>

ロガーの出力ハンドラーを指定します。デフォルトでは、`print` 文を使用します。

```swift lines theme={null}
.withOptions {
  $0.loggerOutput = CleanroomLockLogger()
}
```

上記のコードでは、loggerOutput に [CleanroomLogger](https://github.com/emaloney/CleanroomLogger) を使用するよう設定しています。通常は、loggerOutput プロトコルを実装することでこれを実現できます。もちろん、お好みのロガーライブラリを使用することも可能です。以下は、CleanroomLogger を使用してロガー出力を処理する例です。

```swift lines theme={null}
class CleanroomLockLogger: LoggerOutput {
  func message(_ message: String, level: LoggerLevel, filename: String, line: Int) {
    let channel: LogChannel?
    switch level {
    case .debug:
        channel = Log.debug
    case .error:
        channel = Log.error
    case .info:
        channel = Log.info
    case .verbose:
        channel = Log.verbose
    case .warn:
        channel = Log.warning
    default:
        channel = nil
    }
    channel?.message(message, filePath: filename, fileLine: line)
  }
}
```
