# API 访问令牌

API 访问令牌是分配给您账户中一个或多个项目的唯一标识符。它通过 API 对您的账户进行身份验证，以便管理您的项目，包括账户修改、发送消息、编辑项目等。

## API 访问令牌类型

Pushwoosh 提供两种不同的 API 访问令牌类型：**服务器 (Server)** 和 **设备 (Device)**。

每种令牌类型仅在其特定的 API 范围内有效。如果使用不正确的令牌，将会发生身份验证错误。

#### 服务器 API 令牌

服务器 API 令牌用于除设备 API 下的方法外的所有 API 方法。它应包含在请求正文的 `auth` 字段中。


#### 设备 API 令牌

设备 API 令牌专用于设备 API 方法。它应使用 `Authorization` 标头包含在 HTTP 请求标头中。
以下是正确标头格式的示例：

```
Authorization: Token <device_api_token>
```
将 `<device_api_token>` 替换为您的实际设备 API 令牌值。

<Aside type="caution" title="需要设备 API 令牌的方法">

以下 API 方法**需要设备 API 令牌**进行授权：
- [`registerDevice`](/zh/developer/api-reference/device-api/#registerdevice)
- [`unregisterDevice`](/zh/developer/api-reference/device-api/#unregisterdevice)
- [`deleteDevice`](/zh/developer/api-reference/device-api/#deletedevice)
- [`setTags`](/zh/developer/api-reference/device-api/#settags)
- [`getTags`](/zh/developer/api-reference/device-api/#gettags)
- [`setBadge`](/zh/developer/api-reference/device-api/#setbadge)
- [`applicationOpen`](/zh/developer/api-reference/device-api/#applicationopen)
- [`pushStat`](/zh/developer/api-reference/device-api/#pushstat)
- [`messageDeliveryEvent`](/zh/developer/api-reference/device-api/#messagedeliveryevent)
- [`registerUser`](/zh/developer/api-reference/user-centric-api/#registeruser)
- [`deleteUser`](/zh/developer/api-reference/user-centric-api/#deleteuser)
- [`postEvent`](/zh/developer/api-reference/user-centric-api/#postevent)
- [`registerEmail`](/zh/developer/api-reference/email-api/#registeremail)
- [`deleteEmail`](/zh/developer/api-reference/email-api/#deleteemail)
- [`setEmailTags`](/zh/developer/api-reference/email-api/#setemailtags)
- [`registerEmailUser`](/zh/developer/api-reference/email-api/#registeremailuser)
- [`getInboxMessages`](/zh/developer/api-reference/message-inbox/#getinboxmessages)
- [`inboxStatus`](/zh/developer/api-reference/message-inbox/#inboxstatus)
</Aside>

## 创建和管理 API 访问令牌

您可以在 Pushwoosh 控制面板的 **API 访问 (API Access)** 部分查看、创建和管理您的 API 访问令牌。要访问它，请转到 **设置 (Settings) → API 访问 (API Access)**。
![Pushwoosh 演示应用令牌](/api-reference-api-access-token-1.webp)

默认情况下，每个账户都包含一个名为 **Pushwoosh Demo App** 的令牌，该令牌被设置为服务器令牌。

### 创建新的 API 访问令牌

要创建新的 API 访问令牌：

1. 在控制面板中转到 **API 访问 (API Access)** 部分。

2. 点击 **生成新令牌 (Generate New Token)**。

3. 在出现的窗口中，选择令牌类型：

   * [**服务器 (Server)**](#server-api-token) 用于大多数 API 方法（不包括设备 API 方法）。

   * [**设备 (Device)**](#device-api-token) 仅用于设备 API 方法。

4. 为令牌输入一个名称。

5. 点击 **生成 (Generate)** 来创建令牌。

![生成新令牌](/api-reference-api-access-token-4.webp)

> **重要提示：** 请确保为令牌授予您 Pushwoosh 控制面板中正确应用的访问权限。[了解更多](#edit-token)

新令牌将出现在 API 访问列表中。您可以从那里复制其值以在 API 请求中使用，或根据需要管理其访问权限。

### 管理令牌

要管理现有 API 令牌，请点击 **API 访问 (API Access)** 部分中令牌条目旁边的**三点菜单 (⋮)**。

![管理令牌](/api-reference-api-access-token-2.webp)

提供以下选项：

#### 授予所有项目的访问权限

为令牌授予您账户中所有项目的访问权限。这允许它在所有项目中完全使用 API。

<Aside type="tip">
仅为需要的令牌授予完全访问权限。这有助于确保您的数据安全和访问受控。
</Aside>


#### 撤销所有项目的访问权限

移除令牌对您账户中所有项目的访问权限。在再次授予访问权限之前，该令牌将无法再使用 API。

#### 编辑令牌

打开 **编辑 API 令牌权限 (Edit API Token Permissions)** 屏幕，您可以在其中：

* 更改令牌名称

* 复制令牌值

* 通过在列表中选择或取消选择项目来选择令牌可以访问哪些项目

![管理令牌](/api-reference-api-access-token-3.webp)

完成更改后，点击 **保存 (Save)** 以应用它们。

<Aside type="tip">
仅为令牌授予它们所需项目的访问权限。这有助于保护您的账户并控制每个令牌的功能。
</Aside>

#### 删除令牌

从您的账户中永久删除该令牌。

<Aside type="caution">

此操作无法撤销。一旦删除，令牌将无法恢复。在删除之前，请确保该令牌不再被使用。

</Aside>


## 授权 API 请求

要授权 API 请求，请根据您调用的 API 方法类型使用正确类型的 API 访问令牌：

#### 对于服务器 API 方法

将令牌包含在请求正文的 “auth” 字段中：

示例：

```json
{
  "request": {
    "application": "XXXXX-XXXXX",
    "auth": "yxoPUlwqm…………pIyEX4H", // 在此处粘贴您的服务器令牌
    "notifications": [{
      "send_date": "now",
      "content": "Hello world"
    }]
  }
}
```

#### 对于设备 API 方法

使用**设备令牌**。使用以下格式将其包含在 HTTP 请求标头中：

```
Authorization: Token <device_api_token>
```

将 `<device_api_token>` 替换为您的实际令牌值。
<Aside type="caution">
请确保令牌类型与您使用的 API 方法相匹配。如果令牌与所需类型不匹配，请求将返回身份验证错误。
</Aside>