我有一个 RESTful API,可以连接到多个客户端(Web、iOS 和 Android 应用程序)。目前,用户只能使用用户名和密码(电子邮件是可选的)创建帐户,并且它们在数据库中完全用这些列表示。
用户通过我们的 API 通过 POST 到/session 端点“登录”。 API 响应是一个新的 secret token (我们将其与用户名关联)。客户端使用此 token 来签署由客户端发起的所有 POST 请求,我们的 API 稍后会使用这些请求对请求进行身份验证。
但是,我们现在希望允许社交登录(Google+、FB、Twitter)。为了方便起见,我们的用户也希望使用社交登录,但更希望他们选择自己的随机用户名显示在他们的评论等旁边。
我的问题:我需要对 API 进行哪些更改才能支持社交登录?我是否需要对我的数据库架构进行重大更改以支持这一点,如果需要,究竟是什么?此外,服务器是否需要了解社交登录提供者授予的访问 token ?
请注意,此功能的范围不包括将多个社交登录帐户与同一个人关联的能力。我想让事情尽可能简单。
通常对如何正确实现这一点感到困惑。我更愿意让事情尽可能简单,以便为简单的解决方案加分。任何建议将不胜感激。
最佳答案
用户(用户 ID 整数、昵称 varchar(64)、电子邮件 varchar(255)、密码 varchar(64)、email_verified bool 值、启用 bool 值、created_at timestamptz、updated_at timestamptz)
social_tokens (provider_user_id varchar(255), provider_type enum('facebook', 'twitter', 'google', 'github'), user_id integer, access_token varchar(255), refresh_token varchar(255), expires timestamptz, created_at timestamptz, udpated_at timestamptz)
关于authentication - 如何将社交登录集成到我现有的用户架构/登录系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748208/