ServiceLogin

最后更新:2026年7月3日

ServiceLoginSpace 用来让自有产品的 end-user(ServiceUser)通过 OAuth 注册和登录的配置。它是把一套区别于 Weegloo 平台账号(登录内容工作室的 Weegloo User)的独立身份体系接入产品的入口。通过该配置注册的会员会获得 ServiceLogin 的默认角色(defaultRole),其会员令牌在 ACMA/ACDA 上完成鉴权。

每个 Space 至多只能有一项 ServiceLogin。在已存在的情况下再次调用创建(POST)会返回 WGL409003(409 Conflict)。因此查询也不带 loginId,直接用 GET .../service-login 单条获取这一项(没有列表端点)。

资源结构

下面是一条 ServiceLogin 的响应。它在包含 sys(系统属性)的同时,还带有承载服务展示信息与注册行为的正文属性 namecallbackUrlcontactEmailapprovalRequired

{
  "sys": {
    "id": "3trmXRM3RqbgSnifyg7PSlgn01Ex",
    "type": "ServiceLogin",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "defaultRole": { "sys": { "id": "3trmXRLXeZN2RTHvVj3hFDN5546vbp", "type": "Refer", "targetType": "ServiceUserRole" } },
    "providers": [
      { "registrationId": "google", "clientId": "821047-dailywear.apps.googleusercontent.com" }
    ],
    "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
    "createdAt": "2026-06-18T12:55:00.000Z",
    "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
    "updatedAt": "2026-06-18T12:55:00.000Z",
    "version": 1
  },
  "name": "DailyWear 会员",
  "callbackUrl": "https://dailywear.example/auth/callback",
  "contactEmail": "members@dailywear.example",
  "approvalRequired": false
}

主要键:

  • defaultRole:新注册会员默认获得的 ServiceUserRoleRefer。如果某个会员需要不同的角色,可用 ServiceUserroleOverride 覆盖。
  • providers:该服务支持的 OAuth 提供方列表。每一项由 registrationIdclientIdclientSecret 组成。响应中不会返回 clientSecret
  • callbackUrl:会员完成 OAuth 登录后跳转到的 URL。该 URL 返回时会以查询字符串附带交换令牌(exchangeToken)。
  • approvalRequired:开启后,新会员将以登录禁用(enableLogin=false)的状态注册,需要管理员审批。

系统属性 (sys)

每条 ServiceLogin 都将公共系统属性放在 sys 对象中。spacedefaultRolecreatedByupdatedByRefer 形态({ "sys": { "id", "type": "Refer", "targetType" } })出现。

属性类型说明
idstring资源唯一标识符。
typestring资源种类。ServiceLogin 始终为 "ServiceLogin"
spaceRefer<Space>该配置所属的 Space
defaultRoleRefer<ServiceUserRole>新注册会员默认获得的 ServiceUserRole
providersProvider 数组支持的 OAuth 提供方列表。响应项中不含 clientSecret
createdByRefer<User>创建该配置的 Weegloo User。
createdAtstring (date-time)创建时间。
updatedByRefer<User>最后修改的 Weegloo User。
updatedAtstring (date-time)最后修改时间。
versioninteger资源版本。修改时放入 X-Weegloo-Version 头。

ServiceLogin 是配置资源,没有发布概念。它没有 publisharchivestatus,只有用于防止并发修改冲突的 version

正文属性与 provider

属性类型说明
namestring服务展示名称。
callbackUrlstringOAuth 登录完成后跳转到的 URL。该 URL 返回时会以查询字符串附带 exchangeToken
contactEmailstring服务管理员联系邮箱。
approvalRequiredbooleantrue 时,新会员以 enableLogin=false 起始,需要管理员审批。默认值为 false

providers

providers 是该服务支持的 OAuth 提供方列表。每个 provider 由以下三个值组成。

属性类型说明
registrationIdstringOAuth 提供方标识符。目前支持 googlegithubfacebookgitlabkakaonaverline
clientIdstring在该提供方处签发的客户端 ID。
clientSecretstring在该提供方处签发的客户端密钥。它是只写的,不会在响应中返回。

目前 WEEGLOO 已接入 OAuth 端点的 registrationId 共有 googlegithubfacebookgitlabkakaonaverline 七种。使用其他值将无法完成登录。

provider 既可以一并放进 ServiceLogin 的创建正文中,也可以通过下面的 provider 增加、修改、删除端点单独管理。ServiceLogin 修改(PUT)正文中不包含 providers,因此对已创建配置的 provider 需用专用端点处理。

ServiceLogin 必须始终保留至少 1 个 provider,最多可有 10 个。创建时必须在 providers 中至少放入一个。最后剩下的那一个 provider 无法删除,尝试删除会返回 WGL422055(422)。若要清除所有 provider,请删除 ServiceLogin 本身。

注册重定向 URI

在各 provider(Google、GitHub、Facebook、GitLab、Kakao、Naver、LINE)的控制台创建 OAuth 应用时,必须把已授权的重定向 URI(redirect URI)注册成与 WEEGLOO 所用的值完全一致。若值不一致,登录会以 redirect_uri mismatch 失败。

需要注册的 URI 为以下格式。

https://auth.weegloo.com/v1/spaces/{spaceId}/login/oauth2/code/{registrationId}

  • {spaceId}:该 ServiceLogin 所属 Spacesys.id
  • {registrationId}:provider 标识符(googlegithubfacebookgitlabkakaonaverline)。

例如,要为 Space HnQ32YiH 接入 Google,就注册 https://auth.weegloo.com/v1/spaces/HnQ32YiH/login/oauth2/code/google

API

下面所有端点的基准 URL 为 https://cma.weegloo.com/v1,并需要在 Authorization 头中提供用于鉴权 CMA 的 Bearer 令牌。修改(PUTPATCH)与 provider 管理端点为防止并发修改冲突,必须把当前 sys.version 放入 X-Weegloo-Version 头。创建与 ServiceLogin 删除不带此头。查询时不带 loginId,直接获取该 Space 的这一项 ServiceLogin