---
title: サイレント再検証
description: サイレント再検証エンジンを使用し、Unicoのネットワーク効果の中でユーザーの行動コンテキストを分析することで、現在の取引に対する信頼シグナルを提供します。つまり、取引において想定通りのユーザーであるという確信度を提供します。
canonical: https://developer.unico.io/ja/dual-api/developers/sdks-and-tools/ios/capture-flow/capture-types/silent-revalidation
locale: ja
generated_by: markdown-export
---

サイレント再検証エンジンを使用し、Unicoのネットワーク効果の中でユーザーの行動コンテキストを分析することで、現在の取引に対する信頼シグナルを提供します。つまり、取引において想定通りのユーザーであるという確信度を提供します。

:::info[要件]
最低バージョン: `3.3.0`
:::

## PrepareInfo属性

| 属性 | 型 | 必須 | 説明 |
|---|---|:-:|---|
| `externalUserId` | `String` | ✅ | お客様のシステムにおけるユーザー識別子。送信前に自動的にSHA-256でハッシュ化され、平文で送信されることはありません。 |

## サイレント再検証の開始

****ステップ1** — `initializeSDK` を実装する**

静的な `UnicoSDK.initializeSDK` メソッドを呼び出し、`AcessoBioConfigDataSource` と `environment` を渡します。

  :::warning[アプリ起動時に呼び出す]
  `UnicoSDK.initializeSDK` は、アプリ起動時にできるだけ早く呼び出す必要があります(例: `application(_:didFinishLaunchingWithOptions:)`)。呼び出しが遅れると、バックグラウンド処理の時間が短くなり、認証結果が判定不能になる可能性が高くなります。
  :::

  ### Swift

    ```swift
    UnicoSDK.initializeSDK(
        config: YourUnicoConfig(),
        environment: .UAT
    )
    ```

### Objective-C

    ```objectivec
    [UnicoSDK initializeSDKWithConfig:[YourUnicoConfig new] environment:UAT];
    ```

  `config` はキャプチャですでに実装している `AcessoBioConfigDataSource` と同じものです — `sdkKey` は `getHostKey()` から、バンドルは `getBundleIdentifier()` から取得されます:

  ```swift
  final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
      func getBundleIdentifier() -> String { "your_bundle_id" }
      func getHostKey() -> String { "your_sdk_key" }
  }
  ```

  `environment` を省略した場合、デフォルトは `.PROD` になります。

****ステップ2** — `startSilentValidation` を実装する**

`initializeSDK` の後、`externalUserId` を含む `PrepareInfo` を指定して `startSilentValidation` を呼び出すことで、進行中のコレクションを識別済みのユーザーに関連付けます。

  ### Swift

    ```swift
    let prepareInfo = PrepareInfo(externalUserId: "external_user_id")

    UnicoSDK.startSilentValidation(prepareInfo: prepareInfo) { result in
        switch result {
        case .success:
            break
        case .failure(let error):
            print(error.code, error.desc, error.info)
        }
    }
    ```

### Objective-C

    ```objectivec
    PrepareInfo *prepareInfo = [[PrepareInfo alloc] initWithExternalUserId:@"external_user_id"
                                                                  useCase:nil];

    [UnicoSDK startSilentValidationWithPrepareInfo:prepareInfo
                                   errorCompletion:^(ErrorBio * _Nullable error) {
        if (error == nil) {
            // ...
        } else {
            // error.code, error.desc, error.info
        }
    }];
    ```

  ログイン時など、検証がフローの開始時点で行われる場合は、ステップ3に進む前に成功コールバックを待機してください。

  ## エラー

  | コード | 意味 |
  |---|---|
  | `75001` | SDKが初期化されていません。`initializeSDK` が呼び出されていない、まだ完了していない、または失敗しました。 |
  | `75000` | 汎用的なキャプチャ失敗。 |

****ステップ3** — プロセスを作成して認証する**

検証が進行中の状態で、認証を完了させるために検証プロセスを作成します。[APIリファレンス ▸ API ▸ プロセスの作成](/dual-api/developers/api-reference/api/post-processes) を参照してください。

  ステップ2の `PrepareInfo` で送信したものと同じ `externalUserId` をリクエストボディに含めてください。これにより、バックエンドはプロセスの作成と進行中の検証を関連付けることができます。

  ```bash
  curl -X POST https://api.id.unico.app/processes/v1 \
    -H "Authorization: Bearer $TOKEN" \
    -H "APIKEY: $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "duiType": 1,
        "code": "12345678909",
        "name": "Luke Skywalker",
        "gender": "M",
        "birthDate": "2000-05-20",
        "email": "luke@example.com",
        "phone": "5519725570707"
      },
      "useCase": "Onboarding",
      "externalUserId": "external_user_id"
    }'
  ```

  レスポンスには、認証結果を示す `silentAuth.result` フィールドが含まれます:

  ```json
  {
      "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
      "status": 3,
      "silentAuth": {
          "result": "yes"
      }
  }
  ```

  | フィールド | 型 | 説明 |
  |---|---|---|
  | `silentAuth.result` | string | `yes` または `no` — 詳細な値については以下を参照してください。 |

  <details>
  **`silentAuth.result` — 可能な値**

  | 値 | 意味 |
  |---|---|
  | `yes` | 認証が承認され、十分な確信度でユーザーが認識されたため、追加のキャプチャは不要です。 |
  | `no` | サイレントで承認するにはデータが不十分です。生体認証(セルフィー)またはその他の代替方法による認証が推奨されます。 |

</details>