> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Game Manager 中的 API 访问策略

> 在 Game Manager 中查看和编辑你的 PlayFab title 的 API 访问策略，以允许或拒绝客户端调用并锁定未使用的端点和 CloudScript 功能。

## 关于 PlayFab API

游戏客户端使用类似下面的 URI 向 PlayFab API 发出请求：

* `/client/loginwithxbox`
* `/catalog/getitems`
* `/cloudscript/executefunction`

这些请求包含数据 payload，用于告诉 PlayFab 该做什么：登录哪个玩家、检索什么道具、执行什么函数。

## 什么是 API 访问策略？

每个 PlayFab title 都有一个 **API 访问策略：**一个权限声明列表，用于控制玩家可以从游戏客户端调用哪些 PlayFab API。该策略充当 title 级别的防火墙：当客户端发出 API 调用时，PlayFab 会评估策略以确定请求应该**允许**还是**拒绝**。

默认 API 访问策略允许大多数 API。

## 为什么要修改 API 访问策略？

* 限制对 title 未使用功能的访问
* 防止恶意玩家增加你的成本
* 开发过程中免受拼写错误影响

## 结构

title 的 API 访问策略是一个有序的**声明**列表。每个声明具有以下字段：

| 字段                | 描述                                                                                                                              |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| **Resource**      | 声明适用的 API 路径，表示为 PlayFab Resource Name（例如 `pfrn:api--/Client/*` 或 `pfrn:api--/Client/GetPlayerProfile`）。通配符 `*` 匹配命名空间中的所有 API。 |
| **Action**        | 始终为 `*`（所有操作）。                                                                                                                  |
| **Effect**        | `Allow` 或 `Deny`。                                                                                                               |
| **Principal**     | 声明适用于谁。`*` 表示所有调用者。JSON 对象（例如 `{"master_player_account": "*"}`）针对特定的 principal 类型。我们不建议使用 `*` 以外的 principal。                    |
| **Comment**       | 可选的描述。                                                                                                                          |
| **ApiConditions** | 可选条件，例如 `HasSignatureOrEncryption`。                                                                                             |

## Deny 效果

使用 `Deny` 效果优先于 `Allow` 效果。如果带有通配符的资源（例如 `pfrn:api--/CloudScript/*`）具有 `Deny` 效果，则无法访问以该资源开头的任何 API，即使它们具有特定的 `Allow` 效果。

## API 访问策略页面

Game Manager 中 title 设置页面上的 **API Access Policy** 页面提供了用于查看和编辑 title 的 API 访问策略的界面。

## 索引页面

索引页面显示所有 API 类别的表格，包含以下列：

| 列                      | 描述                                                                    |
| ---------------------- | --------------------------------------------------------------------- |
| **Category**           | API 类别的名称（例如 "Client"、"Server"）。选择以编辑该类别的 API，该类别可能包含多个 API           |
| **Wildcard Statement** | 显示该类别当前的通配符效果，**Allow** 或 **Deny**。这是应用于该类别中每个 API 的默认规则，除非被更具体的声明覆盖。 |
| **Summary**            | 该类别中每个 API 覆盖项的简短计数（例如 "3 denied, 1 allowed"）。                        |

### 可用操作

* **Search**：按名称或 API 路径过滤类别列表。此过滤器在类别页面上保留。
* **Edit as JSON**：为高级用户打开完整策略的 JSON 编辑器。此处保存会一次性替换整个策略，并立即生效。
* **Revert to Defaults**：将整个策略重置回 PlayFab 的默认策略并立即保存。执行此操作前会出现确认对话框。

## 类别页面

单击类别名称将导航到详细信息页面，该页面列出该类别中的每个 API 并具有单独控件。此页面上对复选框的任何更改必须先保存才能生效。

### 通配符规则

每个资源模式组的顶部是**通配符规则**，一个用于 `Allow` 或 `Deny` 的单选按钮组。这为该组中的所有 API 设置默认效果。当通配符设置为 **Deny** 时，其下面的所有单独 API 切换开关都会被禁用，因为整个类别被阻止。

### 单个 API 切换开关

在通配符规则下方，每个 API 端点都带有一个复选框列出。选中时，API 被**允许**；未选中时，被**拒绝**。这些单个 API 切换开关允许你为通配符规则创建例外。例如，默认拒绝所有 Client API，然后仅显式允许你的 title 使用的 API。

### 可用操作

* **Save**：仅保存当前类别的声明
* **Reset**：放弃此类别的所有未保存更改
* **Edit as JSON**：打开范围限定为此类别声明的 JSON 编辑器
* **Search**：过滤类别内的 API 列表

## 更改摘要侧边栏

两个页面都包含屏幕右侧的 **Pending changes** 侧边栏。此侧边栏显示自上次保存以来你更改的每个声明的实时列表，带有颜色编码标签：

* **Allow**：资源已更改为允许
* **Deny**：资源已更改为拒绝
* **Removed**：先前显式的声明已被删除（API 继承其类别的通配符规则）

在索引页面上，侧边栏中的每个更改都链接回相关的类别页面。
