Skip to main content
POST
使用公共客户端的 S256 授权码或其当前刷新令牌获取短期 MCP 访问令牌。

身份验证

不使用 HTTP 客户端身份验证。在 URL 编码的请求体中发送 client_id。任何 Authorization 请求头、client_secret 或 client_assertion 都会被拒绝。

请求体

请求示例

请遵循此路由文档规定的编码和身份验证方式。操作 API 的封装格式和幂等性规则仅适用于操作调用。

响应

不透明的 Bearer 访问令牌、剩余有效期(秒)、已授予的范围,以及客户端注册了 refresh_token 时返回的刷新令牌。expires_in 最大为 900,接近授权到期时可能更小。
HTTP 200

响应头

操作说明

  • 受支持的标量参数必须仅提供一次,值须为不含 ASCII 控制字符或 DEL 的非空字符串。重复的查询或表单字段会解码为数组,在按标量读取时会被拒绝。
  • 使用 URL 编码的表单数据,例如为每个字段使用 curl —data-urlencode。JSON 格式的令牌请求体会被拒绝,并返回 invalid_request。
  • 两种授权类型都必须提供 resource 受众值,且必须与签发授权码或刷新令牌的环境的 MCP URL 完全匹配。
  • 兑换授权码需要原始 client_id、完全一致的 redirect_uri,以及匹配的 S256 code_verifier。授权码在 2 分钟后过期,且仅能使用一次。
  • 令牌端点拒绝所有传入的 Authorization 请求头,包括 Basic 和 Bearer,以及请求体中的任何 client_secret 或 client_assertion 字段。
  • 访问令牌最长有效 15 分钟。注册了 refresh_token 时,连接及其刷新令牌族会在用户批准后 30 天到期;轮换不会延长该期限。
  • 是否返回 refresh_token 取决于已注册的授权类型,与授权请求中是否包含 offline_access 无关。只要返回刷新令牌,返回的 scope 就会追加 offline_access。
  • 续期时,发送 grant_type=refresh_token,并提供 client_id、当前 refresh_token、resource 及可选的缩小范围后的 scope。以原子方式用新值替换存储的刷新令牌。
  • 重复使用已消耗的授权码或已轮换的刷新令牌,会撤销整个连接,包括其所有访问令牌。不要并发兑换同一个授权码或刷新令牌。
  • 刷新请求不会添加权限。显式指定 scope 时,仅保留请求的产品和身份权限;offline_access 不会保留被省略的产品权限。
  • 令牌绑定到授予权限的用户、客户端、资源受众、当前团队所有权和有效付费访问权限。授权被撤销或所有权变更后,需要重新连接。
  • 公开令牌端点的限制为每个客户端 IP 每分钟 60 次请求,由所有工作进程共用。URL 编码的请求体上限为 32 KiB。
  • OAuth 失败时会返回 error 和 error_description。请求体解析失败可能更早以集成解析器的错误格式返回。
  • openid 和 email 是独立于产品权限的身份权限,仅在公布支持时接受。email 需要 openid。在首次授权时,仅包含身份权限的请求会使用同意页面显示的默认产品权限。
  • 动态注册返回的 client_id,或客户端元数据文档的精确公开 HTTPS URL。
  • 授予 openid 后,授权码交换还会返回 RS256 签名的 id_token。请验证签名、颁发者、受众、过期时间,以及已提供的 nonce。已授予的身份权限会出现在令牌响应的 scope 中;刷新响应不会签发新的 id_token。
  • 如果 OpenID Connect 变为不可用,未指定 scope 的刷新会保留产品权限并移除身份权限。显式请求不可用的身份权限会返回 invalid_scope。
  • 如果账户已被删除或停用,令牌端点会返回 HTTP 400 和 invalid_grant。

错误