Accounts 服务
OAuth 与 Session
@downcity/services 里的 oauth 入口、session、me 和 logout 在产品链路里的位置。
除了密码注册登录,accounts service 还承载了 OAuth 和会话相关动作。
OAuth 入口怎么理解
通常有两段:
providersoauth/startoauth/result
常见产品接法里,providers 先负责告诉前端“当前 City 真的开放了哪些登录方式”;oauth/start 负责发起入口;oauth/result 负责确认或轮询结果。
当前官方 accounts service 可以按服务端配置开放 GitHub、Google、WeChat 网站应用登录。前端应该始终以 providers 返回为准,不要把第三方登录按钮写死。
如果你现在要真正把 Google 登录配起来,继续读 Google 登录配置。
如果你现在要真正把微信网站登录配起来,继续读 微信登录配置。
me 和 logout
这两个动作已经属于用户态,不再是 guest 入口。
const me = await user.service("accounts").get("me");
await user.service("accounts").action("logout").invoke();session 在这里的意义
即使产品最终主要靠 user_token 调 City,账号系统仍然需要:
- better-auth 认证事实表
- session 表
- 登录态相关事实
- 产品层 profile 资料
这也是为什么 service 不只是“几个路由”,而是一套完整账号基础设施的最小实现。
me 现在返回什么
GET /v1/accounts/me 不再只返回运行时 user,还会一起返回:
profile:产品层展示资料,例如展示名、头像、简介
这样产品前端和管理侧都不需要再自己去拼认证表。