> This page is for 平台, version 旧版.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 实验版: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - 旧版: https://next.developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# OAuth 2 代码授权流程

## 概述

Frame.io 支持创建和管理 OAuth 2 应用程序。与[开发者令牌](/getting-started/authentication#developer-tokens)不同，OAuth 2 应用程序使任何 Frame.io 用户都能通过安全登录授予其凭据，之后应用程序便可以代表该用户执行操作。

简单来说，OAuth 2 应用程序最适合那些个人用户的上下文和访问权限至关重要的集成场景。





## OAuth 2 授权代码流程




### 基本顺序




从很高的层面来看，OAuth 2 涉及以下三方：



1. **用户**（在我们的示例中：任何拥有 Frame.io 登录凭据的人员）
2. 客户端**应用程序**（外部 OAuth2.0 应用程序）
3. 凭据**服务器**（在我们的示例中：Frame.io）





OAuth 2 的授权代码流程是一个四步过程，通过该过程：



1. **应用程序**向**用户**展示登录界面
2. **用户**输入其凭据，这些凭据直接发送到**服务器**
3. 如果登录成功，**服务器**会返回一个页面，询问**用户**是否确认向**应用程序**授予一组预配置的访问权限范围
4. 如果**用户**同意，**服务器**会向**应用程序**发送一个令牌，该令牌可用于在请求的权限范围内代表**用户**执行操作。





通过这种方式，客户端应用程序可以在获得用户许可的情况下，安全地代表用户执行操作，并且（重要的是）始终无需查看或处理用户的实际凭据。





### 回调循环




上述顺序依赖于服务器 (Frame.io) 托管两个服务，每个服务都有自己的路由：




| 服务 | URL | 方法 | 描述 |
| ---------- | ---------- | ---------- | ---------- |
| Auth | `https://applications.frame.io/oauth2/auth` | `GET` | 根据有关 OAuth 客户端应用程序的信息，与服务器一起调用授权流程。 |
| 令牌 | `https://applications.frame.io/oauth2/token` | `POST` | 根据授权步骤提供的信息，代表用户获取一个令牌。 |




OAuth 2 应用程序在此循环中的角色是向服务器标识自己的身份，并发出这两个请求。





## 快速示例



<Info title="您之前构建过 OAuth 2 应用程序吗？">
  如果您已熟悉 OAuth2.0 的其他基础流程，下面的示例可能足以让您开始上手。如果您想了解更多详情，请在[此处](/oauth-2-applications/building-an-oauth2-app)查看更详细的指南。
</Info>


### 设置您的应用程序



1. 使用您的 Frame.io 凭据登录 [Frame.io 开发者门户](/)，使用左侧的链接导航到 **OAuth 应用程序**，然后点击**新建**开始设置您的应用程序。
2. 在后续界面上，为您的应用程序输入**名称**和**重定向 URI**，选择您的**权限范围**，并选择是否使用 **PKCE**。
3. 保存后，您现在应该可以看到新的应用程序配置了。




<Info title="关于 PKCE">
  **代**码**交**换的**证**明**密钥** (&quot;pixie&quot;) 设置将使您的应用程序能够在不提供其 `client_secret` 的情况下请求令牌。因此，您将不会收到 `client_secret`，并且在您的应用程序回调循环中，`POST` 请求令牌时不应包含 `Authorization` 标头。也就是说，您**需要在回调中包含您的 `client_id`**，否则您的请求将被拒绝。
</Info>


#### 我应该何时使用 PKCE？




总的来说，使用 PKCE 没有负面副作用，并且是推荐和首选的方法。在开发 OAuth2.0 客户端应用程序时，您将在以下两种情况之一中实施代码授权流程：

- **私有**：您的流程是以服务器端语言（Python、Java）实施的，并且您可以在自己控制的服务器中安全地管理您的 `client_secret`。- **公开**：您的流程是以客户端语言 (JavaScript) 实施的，或者直接在终端用户控制的客户端设备（iOS、Android）上实施。

一般来说，如果您（应用程序开发者）无法查看和控制与密钥交换相关的所有网络流量，那么您可以将应用程序视为“公开”。这意味着，除了客户端应用程序之外，移动设备应用程序、嵌入式设备，或任何位于终端用户网络上的设备（AppleTV、Roku 等）都应被视为“公开”。





在私有环境中，您 *可以* 使用 PKCE。在公开环境中，您 *必须* 使用 PKCE。





## 构建您的 OAuth 2 应用程序




现在，您在 Frame.io 中已有一个应用程序配置，您可以着手设置回调服务器来处理完成回调循环所需的两个关键路由，如上表所示。

有关如何构建应用程序的更多详细信息，请参阅[构建 OAuth 2 应用程序](/oauth-2-applications/building-an-oauth2-app)。