ServiceLogin
最后更新:2026年7月3日
ServiceLogin 是 Space 用来让自有产品的 end-user(ServiceUser)通过 OAuth 注册和登录的配置。它是把一套区别于 Weegloo 平台账号(登录内容工作室的 Weegloo User)的独立身份体系接入产品的入口。通过该配置注册的会员会获得 ServiceLogin 的默认角色(defaultRole),其会员令牌在 ACMA/ACDA 上完成鉴权。
每个 Space 至多只能有一项 ServiceLogin。在已存在的情况下再次调用创建(POST)会返回 WGL409003(409 Conflict)。因此查询也不带 loginId,直接用 GET .../service-login 单条获取这一项(没有列表端点)。
资源结构
下面是一条 ServiceLogin 的响应。它在包含 sys(系统属性)的同时,还带有承载服务展示信息与注册行为的正文属性 name、callbackUrl、contactEmail、approvalRequired。
{
"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:新注册会员默认获得的 ServiceUserRole 的Refer。如果某个会员需要不同的角色,可用 ServiceUser 的roleOverride覆盖。providers:该服务支持的 OAuth 提供方列表。每一项由registrationId、clientId、clientSecret组成。响应中不会返回clientSecret。callbackUrl:会员完成 OAuth 登录后跳转到的 URL。该 URL 返回时会以查询字符串附带交换令牌(exchangeToken)。approvalRequired:开启后,新会员将以登录禁用(enableLogin=false)的状态注册,需要管理员审批。
系统属性 (sys)
每条 ServiceLogin 都将公共系统属性放在 sys 对象中。space、defaultRole、createdBy、updatedBy 以 Refer 形态({ "sys": { "id", "type": "Refer", "targetType" } })出现。
| 属性 | 类型 | 说明 |
|---|---|---|
id | string | 资源唯一标识符。 |
type | string | 资源种类。ServiceLogin 始终为 "ServiceLogin"。 |
space | Refer<Space> | 该配置所属的 Space。 |
defaultRole | Refer<ServiceUserRole> | 新注册会员默认获得的 ServiceUserRole。 |
providers | Provider 数组 | 支持的 OAuth 提供方列表。响应项中不含 clientSecret。 |
createdBy | Refer<User> | 创建该配置的 Weegloo User。 |
createdAt | string (date-time) | 创建时间。 |
updatedBy | Refer<User> | 最后修改的 Weegloo User。 |
updatedAt | string (date-time) | 最后修改时间。 |
version | integer | 资源版本。修改时放入 X-Weegloo-Version 头。 |
ServiceLogin 是配置资源,没有发布概念。它没有 publish、archive、status,只有用于防止并发修改冲突的 version。
正文属性与 provider
| 属性 | 类型 | 说明 |
|---|---|---|
name | string | 服务展示名称。 |
callbackUrl | string | OAuth 登录完成后跳转到的 URL。该 URL 返回时会以查询字符串附带 exchangeToken。 |
contactEmail | string | 服务管理员联系邮箱。 |
approvalRequired | boolean | 为 true 时,新会员以 enableLogin=false 起始,需要管理员审批。默认值为 false。 |
providers
providers 是该服务支持的 OAuth 提供方列表。每个 provider 由以下三个值组成。
| 属性 | 类型 | 说明 |
|---|---|---|
registrationId | string | OAuth 提供方标识符。目前支持 google、github、facebook、gitlab、kakao、naver、line。 |
clientId | string | 在该提供方处签发的客户端 ID。 |
clientSecret | string | 在该提供方处签发的客户端密钥。它是只写的,不会在响应中返回。 |
目前 WEEGLOO 已接入 OAuth 端点的 registrationId 共有 google、github、facebook、gitlab、kakao、naver、line 七种。使用其他值将无法完成登录。
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 所属 Space 的sys.id。{registrationId}:provider 标识符(google、github、facebook、gitlab、kakao、naver、line)。
例如,要为 Space HnQ32YiH 接入 Google,就注册 https://auth.weegloo.com/v1/spaces/HnQ32YiH/login/oauth2/code/google。
API
下面所有端点的基准 URL 为 https://cma.weegloo.com/v1,并需要在 Authorization 头中提供用于鉴权 CMA 的 Bearer 令牌。修改(PUT、PATCH)与 provider 管理端点为防止并发修改冲突,必须把当前 sys.version 放入 X-Weegloo-Version 头。创建与 ServiceLogin 删除不带此头。查询时不带 loginId,直接获取该 Space 的这一项 ServiceLogin。
相关文档
- ServiceUserRole:作为
defaultRole授予的权限集。 - ServiceUser:通过该配置注册的会员。
- Auth API:会员的 OAuth 登录与令牌交换流程。
