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

## PrepareInfo属性

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

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

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

新しい `UnicoSDK` クラス/オブジェクトを作成し、`context` と、`sdkKey`、`bundleId`、`environment` を含む `UnicoSDKConfig` を受け取って `UnicoSDK` インスタンスを返す静的な `initializeSDK` メソッドを実装します。返されたインスタンスは保持してください — 後で Java から `startSilentValidation` を呼び出す際に必要になります。

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

  ### Kotlin

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

### Java

    ```java
    UnicoSDK sdk = UnicoSDK.initializeSDK(
        context,
        new UnicoSDKConfig("your_sdk_key", "your_bundle_id", Environment.UAT)
    );
    ```

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

`initializeSDK` の後、`externalUserId` を含む `PrepareInfo` を指定して `startSilentValidation` を呼び出すことで、すでに進行中の収集処理を識別済みのユーザーに関連付けます。

  ### Kotlin

    ```kotlin
    val prepareInfo = PrepareInfo(
        externalUserId = "external_user_id"
    )

    UnicoSDK.startSilentValidation(prepareInfo)
        .onSuccess { result -> /* ... */ }
        .onFailure { error -> /* ... */ }
    ```

### Java

:::info[Javaには Kotlinブリッジが必要です]
    `startSilentValidation` は Kotlin の suspend 関数であり、Java から直接呼び出すことはできません。コルーチンを起動し、単純なコールバックインターフェースを公開する小さな Kotlin ブリッジをプロジェクトに追加してください。
    :::

    ```kotlin
    interface SilentAuthCallback {
        fun onSuccess(success: Boolean)
        fun onFailure(message: String?)
    }

    object SilentAuthBridge {

        @JvmStatic
        fun startSilentValidation(
            owner: LifecycleOwner,
            sdk: UnicoSDK,
            externalUserId: String,
            callback: SilentAuthCallback
        ) {
            owner.lifecycleScope.launch {
                val result = sdk.startSilentValidation(PrepareInfo(externalUserId, null))
                result.onSuccess { callback.onSuccess(it.success) }
                    .onFailure { callback.onFailure(it.message) }
            }
        }
    }
    ```

    ```java
    SilentAuthBridge.startSilentValidation(this, sdk, externalUserId, new SilentAuthCallback() {
        @Override
        public void onSuccess(boolean success) {
            /* ... */
        }

        @Override
        public void onFailure(String message) {
            /* ... */
        }
    });
    ```

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

****ステップ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",
      "imageBase64": "/9j/4AAQSkZJR..."
    }'
  ```

  レスポンスには、認証結果を示す `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>