社交登录由你的运营方(组织)启用,并且每个
组织使用自己的 Google/Apple/Microsoft/Meta 应用,因此用户
在授权页面上看到的是你的品牌。使用
GET /v1/auth/oauth/providers 查询哪些提供方处于启用状态。1. 查询已启用的提供方
为了渲染正确的按钮,你的前端先查询哪些提供方处于启用状态 以及各自的client_id:
client_id 不是机密信息。
2. 在前端获取凭证
每个提供方通过其自己的 SDK 向你交付凭证。最简示例:- Google
- Apple
- Microsoft
- Meta (Facebook)
3. 用凭证交换会话
201:
200,包含 access_token、
account_id 和 role(与密码登录相同)。
type 字段(person | company,默认 person)仅在
创建账户时使用;如果账户已存在则被忽略。
如何判定是创建还是登录
4. 社交登录与 2FA
如果账户在登录时启用了 OTP (安全与 2FA),社交登录同样遵循该第二 步骤:POST /v1/auth/oauth 不会直接返回会话,而是返回
otp_required: true + pending_token,你需要通过
POST /v1/auth/login/otp 完成登录,流程与密码登录一致。
5. 关联与解绑提供方
已登录的用户可以管理自己的登录方式:409 last_login_method(请先设置密码或关联另一个提供方)。
错误
常见问题
我需要处理重定向或 OAuth 回调吗?
我需要处理重定向或 OAuth 回调吗?
不需要。授权流程通过提供方 SDK 在你的前端完成;
你只需将得到的凭证发送给 CBPay。没有回调
页面,也没有服务端状态。
用户可以同时拥有密码和社交登录吗?
用户可以同时拥有密码和社交登录吗?
可以。用户可以先用邮箱/密码注册,之后再关联 Google,
反之亦然。只要邮箱一致且已验证,所有方式都指向
同一个账户。
如果提供方没有返回已验证的邮箱怎么办?
如果提供方没有返回已验证的邮箱怎么办?
不会按邮箱自动关联(防止有人冒用他人
邮箱)。系统会创建一个绑定该身份的独立账户;
用户之后可以再添加邮箱/密码。
提供方的凭证可以当作 CBPay 令牌使用吗?
提供方的凭证可以当作 CBPay 令牌使用吗?
不可以。提供方凭证只用于一次性验证你的身份;后续的
每次调用都使用 CBPay 的
access_token。