

# 步骤 3：创建聊天令牌
<a name="getting-started-chat-auth"></a>

若聊天参与者要连接到房间并开始发送和接收消息，则必须创建聊天令牌。聊天令牌用于验证并授权聊天客户端。

此图表说明创建 IVS 聊天令牌的工作流程：

![\[对新创建的聊天室进行身份验证并授权客户端。\]](http://docs.aws.amazon.com/zh_cn/ivs/latest/ChatUserGuide/images/Chat_Getting_Started_Auth.png)


如上所示，客户端应用程序要求服务器端应用程序提供令牌，服务器端应用程序使用 AWS SDK 或 [SigV4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) 签名请求调用 CreateChatToken。由于 AWS 凭证用于调用 API，因此应在安全的服务器端应用程序中生成令牌，而不是在客户端应用程序中。

[Amazon IVS Chat 演示后端](https://github.com/aws-samples/amazon-ivs-chat-web-demo/tree/main/serverless)提供了一个演示令牌生成的后端服务器应用程序。

*会话持续时间*指已建立的会话在自动关闭之前可以保持活动的时间。换言之，会话持续时间是指在生成新令牌和建立新连接之前，客户端可以保持连接到聊天室的时间。您可以选择在创建令牌期间指定会话持续时间。

每个令牌只能用于为一位终端用户创建一次连接。如果连接已关闭，则必须先创建新令牌，然后才能重新建立连接。在响应中包含令牌到期时间戳之前，令牌本身一直有效。

终端用户想要连接到聊天室时，客户端应要求服务器应用程序提供令牌。服务器应用程序将创建令牌并将其传回客户端。应按需为终端用户创建令牌。

若要创建聊天验证令牌，请按照以下说明操作。创建聊天令牌时，使用请求字段传递聊天终端用户和终端用户消息传递功能的相关数据；有关详细信息，请参阅 IVS Chat API Reference **中的 [CreateChatToken](https://docs.aws.amazon.com//ivs/latest/ChatAPIReference/API_CreateChatToken.html)。

## Amazon SDK 说明
<a name="auth-sdk"></a>

使用 Amazon SDK 创建聊天令牌需要您先在应用程序上下载并配置 SDK。以下是使用 JavaScript 的 Amazon SDK 的说明。

**重要提示：**此代码必须在服务器端执行，并将其输出内容传递给客户端。

**先决条件**：要使用以下代码示例，您需要将 Amazon JavaScript SDK 加载到应用程序中。有关详细信息，请参阅 [Amazon SDK for JavaScript 入门](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started.html)。

```
async function createChatToken(params) {
  const ivs = new AWS.Ivschat();
  const result = await ivs.createChatToken(params).promise();
  console.log("New token created", result.token);
}
/*
Create a token with provided inputs. Values for user ID and display name are 
from your application and refer to the user connected to this chat session.
*/
const params = {
  "attributes": {
    "displayName": "DemoUser",
  }",
  "capabilities": ["SEND_MESSAGE"],
  "roomIdentifier": "arn:aws:ivschat:us-west-2:123456789012:room/g1H2I3j4k5L6",
  "userId": 11231234
};
createChatToken(params);
```

## CLI 说明
<a name="auth-cli"></a>

使用 Amazon CLI 创建聊天令牌是一个高级选项，需要先在计算机上下载并配置 CLI。有关详细信息，请参阅 [Amazon 命令行界面用户指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。注意：使用 Amazon CLI 生成令牌适合用于测试目的，但对于生产用途而言，我们建议您使用 Amazon SDK 在服务器端生成令牌（请参阅上述说明）。

1. 运行 `create-chat-token` 命令以及客户端的房间标识符和用户 ID。包括以下任何功能：`"SEND_MESSAGE"`、`"DELETE_MESSAGE"`、`"DISCONNECT_USER"`。[可选，包括会话持续时间（以分钟为单位）和/或有关此聊天会话的自定义属性（元数据）。这些字段未在下方显示。]

   ```
   aws ivschat create-chat-token --room-identifier "arn:aws:ivschat:us-west-2:123456789012:room/g1H2I3j4k5L6" --user-id "11231234" --capabilities "SEND_MESSAGE"
   ```

1. 这将返回客户端令牌：

   ```
   {
     "token": "abcde12345FGHIJ67890_klmno1234PQRS567890uvwxyz1234.abcd12345EFGHI67890_jklmno123PQRS567890uvwxyz1234abcde12345FGHIJ67890_klmno1234PQRS567890uvwxyz1234abcde",
     "sessionExpirationTime": "2022-03-16T04:44:09+00:00",
     "tokenExpirationTime": "2022-03-16T03:45:09+00:00"
   }
   ```

1. 保存该令牌。您需要它连接到聊天室并发送或接收消息。在会话结束之前，您需要生成另一个聊天令牌（如 `sessionExpirationTime` 所示）。