YAO LING COMMUNITY
一座不问来处的会馆,一方万物共生的社区。
持有通行证,便可通行于所有合作站点——
无需重复注册,无需繁琐验证,一证通行。
罗小黑的世界 · THE WORLD OF LUO XIAOHEI
一方属于罗小黑与伙伴们的小小天地,持通行证,即可往来无阻。
妖灵社区是一个跨站点的统一身份认证体系。 我们致力于为所有合作站点提供便捷、安全、统一的用户认证服务。
在这里,你只需要一张通行证, 就能自由出入所有接入妖灵认证体系的合作站点—— 无需在每个站点重复注册账号,无需记忆繁多的用户名密码。
会馆服务器会在你登录时向社区服务器发起认证请求, 经验证通过后,各站点将显示"社区账号登录"标识, 确保身份真实,通行顺畅。
一张通行证,通行所有合作站点,告别重复注册的繁琐
服务端到服务端的票据验证流程,确保身份真实可靠
登录状态实时同步,一次登录,处处通行
在社区中心统一管理你的通行证信息和站点权限
会馆第一道门,人间与灵域交界。木桥尽头设通行核验,初次到访者请备身份凭证。
妖灵社区通行证采用 服务端到服务端 的认证架构。
当你在合作站点点击"社区通行证登录"时,一场安全的认证交互动将在后台悄悄完成。
在合作站点点击"社区通行证登录"按钮
站点向社区服务器发送认证票据(ticket)
验证票据有效性,确认用户身份,签发通行证令牌
站点显示"社区账号登录",用户在各站点通行无阻
无论你是站点主、服务器运营者,还是内容创作者——欢迎将你的入口接入妖灵社区。持通行证者,可在你的站点畅通无阻。
填写以下信息,等待管理员审核通过后即可展示
第三方站点可通过以下流程接入妖灵社区通行证 SSO 系统,实现一站式登录与头像同步。
https://xiaoheiwo.cn/index.htmlPOST https://xiaoheiwo.cn/api/yaoLing/verify 生成 siteTokenyaoling_sso=siteToken 参数跳转第三方站点POST https://xiaoheiwo.cn/api/yaoLing/verify/siteToken 验证获取用户信息avatar 字段为通行证头像URL(如 https://xiaoheiwo.cn/api/yaoLing/avatar/:userId),可直接用于显示。
针对无法共享 Cookie 的跨域第三方站点,提供标准 OAuth 2.0 授权码流程:
clientId 和 clientSecretPOST https://xiaoheiwo.cn/api/yaoLing/oauth/authorize 获取授权码 codePOST https://xiaoheiwo.cn/api/yaoLing/oauth/token 换取 accessTokenPOST https://xiaoheiwo.cn/api/yaoLing/oauth/userinfo 获取用户信息(含头像)demo_client,clientSecret = demo_secret
第三方站点:接收 siteToken 并验证(Node.js 示例):
// 1. 第三方站点登录路由:接收 yaoling_sso 参数
app.get('/auth/yaoling/callback', async (req, res) => {
const siteToken = req.query.yaoling_sso;
if (!siteToken) return res.redirect('/login');
// 2. 调用妖灵通行证 verify/siteToken 接口验证
const apiRes = await fetch(
'https://xiaoheiwo.cn/api/yaoLing/verify/siteToken',
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ siteToken })
}
);
const data = await apiRes.json();
if (data.success) {
// data.username, data.nickname, data.avatar, data.userId
// 在此创建本站登录会话
req.session.user = {
username: data.username,
nickname: data.nickname,
avatar: data.avatar
};
res.redirect('/');
} else {
res.send('SSO 登录失败:' + data.error);
}
});
前端引导登录(跳转妖灵社区):
// 第三方站点:引导用户前往妖灵社区
function loginWithYaoLing() {
window.location.href = 'https://xiaoheiwo.cn/index.html';
}
OAuth 获取用户信息(任意语言后端):
// 第3步:用 accessToken 获取用户信息
async function getUserInfo(accessToken) {
const res = await fetch('https://xiaoheiwo.cn/api/yaoLing/oauth/userinfo', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ accessToken })
});
return await res.json();
// 返回: { success: true, user: { id, username, nickname, email, avatar, ... } }
}