简体中文
简体中文
Appearance
简体中文
简体中文
Appearance
接收者门户是位于 badges.ninja/me 的自助区域,任何获得过徽章的人都可以在此登录(无需账号),浏览自己通过 badges.ninja 获得的所有凭证,并打造公开个人主页进行分享。
它与颁发者控制台是两种独立的体验:
| 受众 | URL | 认证 |
|---|---|---|
| 颁发者(颁发徽章的人) | /dashboard | 真实账号(邮箱 + 密码 / SSO) |
| 接收者(获得徽章的人) | /me | 通过邮件的魔法链接 — 无账号、无密码 |
| 任何人(验证者) | /awards/<guid>、/verify/<guid>、/u/<handle> | 无 — 完全公开 |
为什么不用密码?
接收者不该仅仅为了看自己获得的徽章而额外记一个登录。我们改为给他们发送一次性链接。
访问 badges.ninja/me。页面仅显示一个邮箱输入框:

输入接收过徽章的邮箱地址,点击 给我发送登录链接。
不管该地址是否存在颁发记录,我们都会返回"请查看邮箱"的提示。这样可避免泄露某个邮箱是否曾从平台上的任何颁发者处收到过徽章。
如果该地址确有颁发,你会收到一封标题为 "登录你的 Badges Ninja 门户" 的邮件,里面只有一个按钮:
打开我的门户
链接在 24 小时 内有效,且只能使用一次。若在点击前过期,请重新申请一条 — 没有任何惩罚。
点击链接会打开 badges.ninja/me?token=…。页面会将该 token 换成 1 小时有效的会话 token(仅存放在浏览器的 sessionStorage,不会写入 cookie),并重定向到徽章墙。关闭标签或活动一小时后(以先到为准),会话会过期。
登录后,门户会显示:
badges.ninja/u/jane-3a4f)— 从你邮箱本地部分自动建议,并附加 4 个随机字符以保证唯一。点击 更改 可以选更漂亮的。/u/<handle>)。颁发本身仍然有效;你只是管理公开列出的内容。
颁发每次加载 50 条。如果超过,底部会出现 加载更多 按钮;后端以稳定游标分页,滚动时顺序不会变动。
顶栏的 退出登录 按钮会从 sessionStorage 清除会话 token。关闭标签也会自动做相同的事。
当你拥有 handle 后,任何访问 badges.ninja/u/<handle> 的人都会看到你的徽章整洁网格,带显示名和徽章数量,以及每枚徽章的卡片 — 点击可打开公开颁发页。

公开主页只显示你未隐藏的徽章。分享 /u/<handle> URL 无需登录 — 它是你拥有的完全公开页面。
handle 必须为 3-20 个字符,只能是 a-z 0-9 _ -。不区分大小写,且在 badges.ninja 全局唯一。如果想要的 handle 被占用,你会收到明确错误,可以换一个。
你可以随时在门户更改 handle — 新的会立刻成为规范 URL,旧的则对他人开放重新认领。你已发出的旧分享链接(/u/旧-handle)不会跳转 — 它们只会显示"未找到主页"。
门户底部有一个 从 Badges Ninja 移除我的数据 的链接。它会做以下事情:
removed:5f3a8b9c…)替换你在每条收到的颁发记录中的邮箱。颁发本身保持不变(assertion JSON、徽章图片、区块链证明如有),因此你不会使凭证失效 — 颁发者仍保有你的徽章 — 但你变得 无法被发现:在任何门户搜索你的邮箱都不返回结果,你的 /me 登录也不会再找到颁发记录。/u/<handle> 返回 404,该 handle 可被他人使用。该操作不可逆。只有在清理完成前改变主意时,你才需要新的门户会话(即新的魔法链接)。
该操作 不会:
/awards/<guid> 的 JSON 文件)出于验证目的保持有效 — 这是规范要求。两种可能:
/awards/<guid> URL 查看。暂时不能。门户目前仅显示通过 badges.ninja 颁发的徽章。跨颁发者聚合("Open Badges Backpack" 模型)是 Open Badges 在 2010 年代初的重大目标,但生态已转向 LinkedIn 作为事实上的聚合方。我们不打算在这个方向竞争。
可以 — 当颁发者设置了 LinkedIn 组织 ID 时,每个公开颁发页(/awards/<guid>)都有 添加到 LinkedIn 个人资料 按钮。该按钮使用 LinkedIn 的 Add-to-Profile 深链,徽章会直接进入你的"证书"板块,无需手动复制粘贴。
每个颁发页都追踪浏览数、分享数、下载数以及 LinkedIn 添加点击。颁发者在自己的控制台看到这些;接收者在公开颁发页看到。按照 Credly 的惯例,从不记录访客身份 — 仅记录计数。
24 小时。之后请再申请一条 — 无速率限制,无惩罚。
登录后 1 小时。在此窗口内刷新页面会保持会话;关闭标签则结束会话。
不能。隐藏的徽章会在公开的 /u/<handle> 视图中被过滤。仅当你登录到门户时它们才对你可见。
可以 — 从门户打开任意徽章,然后在公开颁发页使用 下载 PNG(Open Badges baked) 或 下载 PDF 证书 按钮。两者都已签名,可根据 Open Badges v2 规范验证。
接收者访问门户对颁发者没有任何影响 — 颁发者控制台上的颁发表格工作方式完全一致。门户纯粹是增量功能。
如果你是颁发者且尚未设置 LinkedIn 组织 ID,现在就设置:管理颁发者 → LinkedIn 添加到个人资料。它是平台上最大的"分享率"杠杆。
{ kind: "magic", email, exp },使用通过 AWS Secrets Manager 轮换的服务端密钥签名(recipient/keys:tokenSecret)。验证时签发 { kind: "session", email, exp } token。无需数据库存储会话。RECIPIENT_EMAIL_LC-TIMESTAMP GSI。邮箱在存储和查询前规范化为小写。EMAIL_LC,以便 /u/<handle> 在接收者未登录时也能列出颁发。隐藏的颁发在服务端过滤。RECIPIENT_EMAIL_LC 重写为 removed:<random>,并通过 DynamoDB UPDATE 删除明文 RECIPIENT_EMAIL 属性。主页行被删除。POST /me/auth/request { email } — 邮件发送魔法链接POST /me/auth/verify { token } — 返回会话 tokenGET /me — 主页 + 首页颁发(Bearer)GET /me/awards?lastEvaluatedKey=… — 分页(Bearer)PUT /me/handle { handle } — 设置/更改 handle(Bearer)PUT /me/awards/{guid}/visibility { hidden: bool } — 切换隐藏(Bearer)POST /me/auth/forget — GDPR 解绑(Bearer)GET /u/{handle} — 公开主页(无需认证)