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

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

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

## UnicoCheckPrepareInfo属性

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

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

****ステップ1** — ネイティブコードで `initializeSDK` を実装する**

`initializeSDK` はDartには公開されていません。Flutterエンジンの起動前に実行する必要があるため、アプリのネイティブコードから呼び出します — Androidでは `Application.onCreate`、iOSでは `application(_:didFinishLaunchingWithOptions:)` です。

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

  ### Android

    ```kotlin
    import android.app.Application
    import com.acesso.acessobio_android.onboarding.UnicoSDK
    import com.acesso.acessobio_android.onboarding.models.Environment
    import com.acesso.acessobio_android.onboarding.models.UnicoSDKConfig

    class MainApplication : Application() {
        override fun onCreate() {
            super.onCreate()

            UnicoSDK.initializeSDK(
                this,
                UnicoSDKConfig(
                    sdkKey = "your_sdk_key",
                    bundleId = "your_bundle_id",
                    environment = Environment.UAT
                )
            )
        }
    }
    ```

    `android/app/src/main/AndroidManifest.xml` でクラスを登録します:

    ```xml
    <application android:name=".MainApplication">
    ```

    プラグインはネイティブのキャプチャSDKをアプリケーションに公開するため、`UnicoSDK` はすでにコンパイルクラスパスに含まれています — `android/app/build.gradle` に追加の依存関係は必要ありません。

### iOS

    ```swift
    import AcessoBio
    import Flutter
    import UIKit

    @main
    class AppDelegate: FlutterAppDelegate {
        override func application(
            _ application: UIApplication,
            didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
        ) -> Bool {
            UnicoSDK.initializeSDK(config: YourUnicoConfig(), environment: .UAT)

            GeneratedPluginRegistrant.register(with: self)
            return super.application(application, didFinishLaunchingWithOptions: launchOptions)
        }
    }
    ```

    `config` は `AcessoBioConfigDataSource` です — `sdkKey` は `getHostKey()` から、バンドルは `getBundleIdentifier()` から取得されます:

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

  `environment` を省略した場合、デフォルトは本番環境になります。

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

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

  ```dart
  import 'package:unico_check/unico_check.dart';

  try {
    await UnicoSilentAuthDefault().startSilentValidation(
      UnicoCheckPrepareInfo(externalUserId: 'external_user_id'),
    );
  } on UnicoError catch (error) {
    // error.code, error.description, error.info
  }
  ```

  返される `Future` は検証が正常に開始された時点で完了し、失敗した場合は `UnicoError` をスローします。

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

  ## エラー

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

  `UnicoError.info` には、失敗したフローのステップが含まれます。iOSでは提供され、Androidでは常にnullになります。

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

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

  ステップ2の `UnicoCheckPrepareInfo` で送信したものと同じ `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>