Undefined SS 社区 LogoScreenshareDevelopers
管理密钥 ↗
开始接入 / 多组织接入

多组织接入

一个 Screenshare 账号可以属于多个组织,并在不同组织中拥有不同角色。API 的授权上下文始终由密钥绑定组织 + URL 中的组织 ID + 当前成员权限共同决定。

显式绑定,禁止猜测

假设同一个账号是组织 A 的管理员、组织 B 的管理员、组织 C 的普通成员:

组织 可创建组织密钥 可用该密钥访问
A 是 A 的记录、邀请、工单和权益,仍受 scope 限制
B 是 B 的相应能力
C 否 不可因同账号管理 A/B 而获取 C 的 API 权限

用 A 的密钥请求 /v1/partners/B/invitations 会返回 403 PARTNER_SCOPE_MISMATCH。即使创建者同时是 B 的管理员,也不会自动切换。

推荐配置模型

在你自己的后台建立“服务器 → 组织 ID → 密钥引用”映射。密钥引用指向环境变量或密钥存储,不直接放在用户可下载的配置中。

{
  "servers": {
    "survival": {"partner_id":"ORGANIZATION_A_ID","key_env":"SCREENSHARE_KEY_A"},
    "minigames": {"partner_id":"ORGANIZATION_B_ID","key_env":"SCREENSHARE_KEY_B"}
  }
}

启动时对每份配置调用 /v1/me,严格比较返回的 partner_id。不要选择组织列表中的第一个组织,不要使用“最近使用的组织”,不要以组织名称代替 ID。

一次邀请的业务记录

在调用创建接口之前持久化:

字段 用途
local_request_id 你自己的业务主键
server_id 发起请求的服务器
partner_id 明确选定的组织
credential_reference 使用哪份密钥配置,不是完整密钥
idempotency_key 本次调用及所有恢复重试使用的编号
request_body 规范化后的 game 和 notes
invitation_id API 成功返回后保存
ticket_id 玩家加入后返回的正式工单 ID

普通插件玩家不能任意传入 partner_id 后就以你的管理员密钥创建邀请。先在你自己的应用中验证操作人的管理员权限,再从可信配置选择组织。

Webhook 也要按组织分开

每个回调只绑定一个组织并拥有独立签名密钥。多组织应用可以共用接收服务,但建议使用不同路径,如 /hooks/screenshare/org-a 和 /hooks/screenshare/org-b,以便先按接收配置选择签名密钥。

先验证签名,再信任载荷的 partner_id,并核对它与当前回调配置相符。不要根据尚未验签的 partner_id 自动选择生产密钥或执行操作。

成员权限变化

创建者失去某个组织管理员身份时,该组织相关凭证立即失效,其他组织凭证不受此成员变更影响。接收方应将 401 或 403 标记为“需要管理员修复凭证”,停止自动重试授权失败,并暂停相应组织的自动任务。

© Screenshare · 面向开发者与 Partner 的开放接口