跳到正文

用户授权 ​

通过用户授权,用户可以指定应用允许操作的业务资源和有效期限。本文介绍如何查询授权选项、创建授权、核验授权范围和撤销授权。

API 调用权限、用户同意和资源权限分别校验。创建授权不会购买商品或增加额度。

前提条件 ​

创建、续期及核验前,先按接入入口与权限配置当前应用的用户身份与所需 API Scope,再完成授权码 + PKCE 登录。列表和撤销只要求有效的本人登录与当前企业关系,不要求管理权限、业务 Scope 或应用可用状态。每次调用携带用户 Bearer 和 X-GV-Organization-ID。用户必须属于当前客户企业;不使用应用身份 Token,也不在正文传入另一个用户或企业。

接口列表 ​

接口说明
GET /open-platform/v1/delegated-grant-options读取当前应用、当前用户 OAuth Client 可用的授权选项
GET /open-platform/v1/delegated-grants读取本人的授权;可按 status=active|revoked|expired 筛选
POST /open-platform/v1/delegated-grants创建或按版本更新本人授权
POST /open-platform/v1/delegated-grants/{id}:revoke使用当前版本撤销本人授权
POST /open-platform/v1/delegated-grants:authorize核验当前请求是否在有效授权范围内

这些共享接口不单独申请一个 API 产品。创建及核验授权时,Token、应用用户身份与 API 调用权限必须共同包含请求的业务 Scope。

查询选项并创建授权 ​

sh
curl --request GET \
  --url "${GOODVISION_API_BASE}/open-platform/v1/delegated-grant-options?application_id=${GOODVISION_APPLICATION_ID}" \
  --header "Authorization: Bearer ${GOODVISION_USER_ACCESS_TOKEN}" \
  --header "X-GV-Organization-ID: ${GOODVISION_CUSTOMER_ORGANIZATION_ID}"

响应的 items 包含可用的 application_id、application_name、environment、environment_binding_id、api_product_id、scopes 和 product_codes。选项来自当前应用、环境和 API 产品的有效权限。product_codes 只在存在真实商业资源时提供候选;空数组不代表用户已经授权,创建授权时仍须使用业务 Owner 确认的精确资源。

Client 与环境绑定由平台根据当前来源派生;创建和核验请求只提交应用、环境与 API 产品,不提交 OAuth Profile、订阅或环境绑定 ID。其他产品请使用对应说明中的资源类型与范围。

向用户展示用途、Scope、资源和到期时间,确认后调用创建接口,携带稳定的 Idempotency-Key。以下为 Token 产品示例,替换所有占位值:

json
{
  "application_id": "<application_id>",
  "environment": "sandbox",
  "api_product_id": "<api_product_id>",
  "scopes": ["inference.models.read", "inference.invoke"],
  "resource_scope": {"resource_type": "token_product", "resource_ids": ["<product_code>"]},
  "expires_at": "<future RFC3339 timestamp>",
  "version": 0
}

创建成功返回 201,更新成功返回 200。保存 id、application_id、environment、environment_binding_id、api_product_id、version、status、expires_at 和实际授权范围。更新时使用已查询到的原授权正版本。

独立订单支付使用 order_payment_product,请按其指南配置资源类型。

查询、核验与撤销授权 ​

列表返回 {"items": [...]},只包含当前用户在当前企业中的授权。授权的 active 状态不替代每次请求的权限核验。

核验接口接收 grant_id、application_id、environment、api_product_id、scopes 和 resource_scope。使用上一步的有效授权配置,所请求的资源与 Scope 必须在已授权范围内。

返回 200 且 authorized=true 表示本次授权范围检查通过,目标 API 仍需检查当前资源权限。此操作只读,无需幂等键。

撤销时,向原授权 ID 的 :revoke 接口发送固定的 Idempotency-Key 和 {"version": <current_version>, "reason": "用户不再使用此应用"}。原因长度为 3–500 个字符,重试使用相同键和正文。

返回 status=revoked 后停止使用该授权。用户重新同意时会创建新记录。授权到期后,后续调用也会被拒绝。

错误与恢复 ​

状态码或情况处理方式
401/403检查本人登录、客户企业、当前用户 Client 和业务 Scope
409查询当前版本及状态,让用户重新确认,不扩大资源范围强行重试
400/422修正请求字段、版本和未来到期时间
503 或写请求超时保留原正文与原 Idempotency-Key,查询状态后按幂等与重试恢复

确认响应前,保持授权结果待确认。

下一步:Token API · 独立订单支付

用户关联与用户授权 ​

用户与客户空间返回用户别名和当前成员关系,不能代替用户授权、API Scope 或资源权限。两个应用可关联同一用户,授权及撤销仍分别处理。

开发者文档。第三方接入不需要内部运营平台权限。