各平台社交登录(oauth2)如何处理用户信息?

问题描述 投票:0回答:1

我经常使用使用 Google、Facebook 和 Apple 等平台信息登录的服务。通过该方式登录,用户无需单独进行认证或会员注册,即可获取用户信息并使用需要认证的服务。

我很好奇在这种情况下用户信息如何存储在数据库中。 保存到数据库时,需要唯一的 id(包含唯一值的列)。 问题是,与使用我自己的登录名不同,我不知道使用什么来设置唯一值。在服务自己的登录中,可以通过邮箱认证或者userId来获取用户的唯一性。

我想要的是使用db的唯一值来防止帐户信息与其他用户冲突,并防止重复创建用户,即使在任何oauth2提供的平台中更改用户信息后也是如此。

这可能吗?你用什么方法?

我正在考虑使用平台+标识符创建一个唯一标识符,例如google(平台用户信息ID或...)。

database authentication validation oauth-2.0
1个回答
0
投票

如果您推出自己的解决方案,您将设计这样的字段并将它们存储在某种 linked_accounts 表中:

  • 提供商
  • 用户ID

然而事情并没有那么简单。例如,您可能希望支持使用密码或数字钱包登录,这不适合此模式。

这是一种有用的技术,可以提示用户使用现有方法进行身份验证,作为加入新方法的一部分。

最完整的解决方案是让您的应用程序和 API 仅与 RFC6749 中的授权服务器 (AS) 角色交互。

这样做的目的是实现最佳的关注点分离以及 API 和客户端中最简单的代码。

© www.soinside.com 2019 - 2024. All rights reserved.