OAuth - 我可以存储哪些信息?

OAuth - What information can I store?

我正在运营一个电子商务网站,并且想让该网站更易于访问,因此我正在考虑使用 OAuth,以便他们可以使用他们的一些社交媒体配置文件登录。我还通过电子邮件和其他方式向我的客户发送了很多营销活动,所以在用户注册的那一刻,我有一些信息,比如他们的电子邮件和一些关于他们职业的详细信息(与产品相关,不担心我不是多管闲事!)。

如果用户使用 OAuth 登录,那么他们将不会向我提供一些基本信息,例如他们的电子邮件,因为他们不必使用注册表单。

那么,在实施 OAuth 时,我想知道我可以将哪些有关用户的数据存储到我的数据库中?例如,目前我可以向我网站上的所有用户发送时事通讯,但是使用 OAuth 有可能吗?如果每个用户使用 OAuth 登录,我可以访问他们的哪些信息?

抱歉,如果这些问题已在其他地方得到解答,我一直在尝试四处搜索,但没有找到关于公司可以获得什么的任何信息,我只是从基本编码的角度发现了优点和缺点从用户的角度来看。

谢谢!

使用 OpenID Connect(OAuth 2.0 的标准化扩展配置文件),您可以通过第 3 方提供商对用户进行身份验证。也有许多提供者已经创建了他们自己的 OAuth 2.0 专有扩展,为他们提供了登录语义,但它们不是标准化的,您的客户端代码将不得不处理这些专有扩展中的每一个。可以预期,所有使用专有 OAuth 2.0 扩展进行登录的提供商将来都会迁移到 OpenID Connect。

OpenID Connect(以及专有的 OAuth 2.0 扩展协议)不仅对用户进行身份验证,而且还以声明(或:属性)的形式提供用户身份信息。因此,他们 提供您正在寻找的基本信息(例如电子邮件),前提是用户同意将其提供给您的客户。您可以使用该信息并将其存储在您的数据库中以供离线访问。

OpenID Connect 的好处是它标准化了许多基本声明,因此您的代码在处理用户信息时可以与提供商无关。参见 http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims。专有的 OAuth 2.0 登录协议不提供标准化声明,因此您需要针对每个提供商进行自定义处理 (mapping/translation)。