

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 对 Amazon Rekognition Face Liveness API 进行编程
<a name="face-liveness-programming-api"></a>

要使用 Amazon Rekognition Face Liveness API，您必须创建一个执行以下步骤的后端：

1. 致电[CreateFaceLivenessSession](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_CreateFaceLivenessSession.html)以启动 Face Liveness 会话。`CreateFaceLivenessSession` 操作完成后，用户界面会提示用户提交自拍视频。然后，AWS Amplify 的 FaceLivenessDetector 组件会调用[StartFaceLivenessSession](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_rekognitionstreaming_StartFaceLivenessSession.html)以执行活跃度检测。

1. 致电[GetFaceLivenessSessionResults](https://docs.aws.amazon.com/rekognition/latest/APIReference/API_GetFaceLivenessSessionResults.html)返回与 Face Liveness 会话相关的检测结果。

1. 按照 A [mplify L](https://ui.docs.amplify.aws/react/connected-components/liveness) iveness 指南中的步骤继续配置你的 React 应用程序以使用该 FaceLivenessDetector组件。

在使用 Face Liveness 之前，请确保您已创建 AWS 账户，设置 AWS CLI 和 AWS SDK，并设置 AWS Amplify。您还应确保您的后端 API 的 IAM 策略具有涵盖以下内容的权限：`GetFaceLivenessSessionResults` 和 `CreateFaceLivenessSession`。有关更多信息，请参阅[先决条件](face-liveness-prerequisites.md)部分。

## 第 1 步： CreateFaceLivenessSession
<a name="face-liveness-programming-api-create-session"></a>

CreateFaceLivenessSession API 操作会创建一个 Face Liveness 会话并返回一个唯一`SessionId`会话。

作为此操作输入的一部分，还可以指定 Amazon S3 存储桶的位置。这允许存储在 Face Liveness 会话期间生成的参考图像和审核图像。Amazon S3 存储桶必须位于调用者的 AWS 账户中，并且与 Face Livess 端点位于同一区域。此外，S3 对象密钥由 Face Liveness 系统生成。

也可以提供一个 `AuditImagesLimit`，这是一个介于 0 和 4 之间的数字。默认情况下，将它设置为 0。返回的图像数量是尽力而为，并以自拍视频的持续时间为准。

最后，你可以提供一个 ChallengePreference，包括你希望你的会话默认为的挑战类型和版本。默认情况下，这将使用 FaceLivenessMovementAndLightChallenge但可以设置为 FaceMovementChallenge。

**请求示例**

```
{
   "ClientRequestToken": "string",
   "KmsKeyId": "string",
   "Settings": { 
      "AuditImagesLimit": number,
      "ChallengePreferences": [ 
         { 
            "Type": "string",
            "Versions": { 
               "Maximum": "string",
               "Minimum": "string"
            }
         }
      ],
      "OutputConfig": { 
         "S3Bucket": "string",
         "S3KeyPrefix": "string"
      }
   }
}
```

**响应示例**

```
{
    {"SessionId": "0f959dbb-37cc-45d8-a08d-dc42cce85fa8"}
}
```

## 第 2 步： StartFaceLivenessSession
<a name="face-liveness-programming-api-start-session"></a>

 CreateFaceLivenessSession API 操作完成后，AWS Amplify 组件将执行 StartFaceLivenessSession API 操作。系统会提示用户拍摄自拍视频。要成功进行检查，用户必须将脸部放在屏幕上的椭圆形内，同时保持良好的光线。有关更多信息，请参阅 [Face Liveness 的使用建议](recommendations-liveness.md)。

此 API 操作需要在 Face Liveness 会话期间捕获的视频、从 API 操作中 CreateFaceLivenessSession 获得的 sessionID 以及`onAnalysisComplete`回调。回调可用于向后端发出调用 API 操作的信号， GetFaceLivenessSessionResults API 操作会返回置信度分数、参考和审计图像。

请注意，此步骤由客户端应用程序上的 AWS Amplify FaceLivenessDetector 组件执行。您不需要进行其他设置即可调用 `StartFaceLivenessSession`。

## 第 3 步： GetFaceLivenessSessionResults
<a name="face-liveness-programming-api-get-session-results"></a>

 GetFaceLivenessSessionResults API 操作检索特定 Face Liveness 会话的结果。它需要会话 ID 作为输入，并返回相应的 Face Liveness 置信度分数。它还提供包含面部边界框的参考图像，以及包含面部边界框的审核图像。Face Liveness 置信度分数介于 0—100 之间。

**请求示例**

```
{"SessionId": "0f959dbb-37cc-45d8-a08d-dc42cce85fa8"}
```

**响应示例**

```
{
    "SessionId": "0f959dbb-37cc-45d8-a08d-dc42cce85fa8",
    "Confidence": 98.9735,
    "ReferenceImage": {
        "S3Object": { 
            "Bucket": "s3-bucket-name",
            "Name": "file-name",
        },
        "BoundingBox": { 
           "Height": 0.4943420886993408, 
            "Left": 0.8435328006744385, 
            "Top": 0.8435328006744385, 
            "Width": 0.9521094560623169}
    },
    "AuditImages": [{
        "S3Object": { 
            "Bucket": "s3-bucket-name",
            "Name": "audit-image-name",
        },
        "BoundingBox": { 
           "Width": 0.6399999856948853,
           "Height": 0.47999998927116394,
           "Left": 0.1644444465637207,
           "Top": 0.17666666209697723}
    }],
    "Status": "SUCCEEDED"
}
```

## 步骤 4：对结果做出回应
<a name="face-liveness-programming-api-respond-results"></a>

Face Liveness 会话结束后，将检查的置信度分数与指定的阈值进行比较。如果分数高于阈值，则用户可以转到下一个屏幕或任务。如果检查失败，将通知用户并提示其重试。