Accounts 服务

OAuth 与 Session

@downcity/services 里的 oauth 入口、session、me 和 logout 在产品链路里的位置。

除了密码注册登录,accounts service 还承载了 OAuth 和会话相关动作。

OAuth 入口怎么理解

通常有两段:

  • providers
  • oauth/start
  • oauth/result

常见产品接法里,providers 先负责告诉前端“当前 City 真的开放了哪些登录方式”;oauth/start 负责发起入口;oauth/result 负责确认或轮询结果。

当前官方 accounts service 可以按服务端配置开放 GitHub、Google、WeChat 网站应用登录。前端应该始终以 providers 返回为准,不要把第三方登录按钮写死。

如果你现在要真正把 Google 登录配起来,继续读 Google 登录配置

如果你现在要真正把微信网站登录配起来,继续读 微信登录配置

melogout

这两个动作已经属于用户态,不再是 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:产品层展示资料,例如展示名、头像、简介

这样产品前端和管理侧都不需要再自己去拼认证表。