UM 既是【后端服务】(OAuth 2.0、UMID 联邦身份、RBAC、多租户),
也是【工具产品】(公开首页 + 文档 + Playground + 控制台,类比 GitHub / Stripe Dashboard)。
接入一次,微信/抖音/淘宝/支付宝/自有站 的用户合并为同一个 UMID,
数据归用户所有,可带走、可迁移、可删除。
不用从零造账号系统,不用对接 5 家平台,UM 帮你把脏活累活全干了
标准授权码模式 + PKCE,5 分钟接入 IM 应用。access_token 2 小时、refresh_token 30 天。
跨平台用户识别,5 大平台账号合并为一个 UMID,跨应用画像统一。
5 级角色 + 100+ 细粒度 perm_key,支持按应用/按资源灵活授权。
每个接入方一个 appid,数据完全隔离,注册即送租户。
从注册到第一个用户登录,只要 5 分钟
免费注册一个 appid,立即拿到 client_id 和 client_secret。
构造授权 URL,用户在 UM 页面扫码/输入账号,UM 处理所有平台对接。
$state = bin2hex(random_bytes(8));
$url = "https://um.yunjii.cn/connect.php"
. "?appid={$appid}&redirect_uri={$cb}"
. "&scope=user.profile&state={$state}";
header("Location: $url");
UM 回调到你的 redirect_uri,附带 code。凭 code 换 access_token,再调 GET /um/api/me 拿到 UMID。
$code = $_GET['code'];
$token = exchange($code);
$user = api('GET', '/um/api/me', $token);
// $user->umid = "UMID-a1b2c3d4..."
# 1. 注册接入方(免费)
$ curl -X POST https://um.yunjii.cn/api/signup \
-d "email=me@myapp.com&name=MyApp"
{
"appid": "app_8f7a3c...",
"secret": "sk_test_...",
"redirect": "https://myapp.com/cb"
}
# 2. 引导用户授权
$ open "https://um.yunjii.cn/connect.php?appid=app_8f7a3c..."
→ 用户扫码 → 同意 → 跳回 https://myapp.com/cb?code=xxx
# 3. 换取 access_token
$ curl -X POST https://um.yunjii.cn/oauth/token \
-d "code=xxx&appid=app_8f7a3c...&secret=sk_test_..."
{
"access_token": "at_7d8c...",
"refresh_token": "rt_9a2b...",
"expires_in": 7200
}
# 4. 拿到 UMID
$ curl https://um.yunjii.cn/api/me \
-H "Authorization: Bearer at_7d8c..."
{
"umid": "UMID-a1b2c3d4-...",
"name": "张三",
"avatar": "https://...",
"binds": ["wx", "dy", "tb", "own"],
"score": 1280
}
用户首次扫码登录,UM 记录账号绑定;后续任意平台登录,自动识别为同一用户
5 品牌 × 7 实体 × 1 套设计 token。比 WordPress 高一个维度