1

我正在运行一个电子商务网站,并希望使该网站更易于访问,因此我正在考虑使用 OAuth,以便他们可以使用他们的一些社交媒体资料登录。我还通过电子邮件和其他方式向我的客户发送大量营销活动,所以当用户注册时,我有一些信息,例如他们的电子邮件和有关他们职业的一些详细信息(与产品相关,不要担心我不会多管闲事!)。

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

那么,在实现 OAuth 时,我想知道我可以将哪些关于用户的数据存储到我的数据库中?例如,目前我可以向我网站上的所有用户发送时事通讯,但是使用 OAuth 是否可以做到这一点?如果每个用户使用 OAuth 登录,我可以访问哪些类型的信息?

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

谢谢!

4

1 回答 1

0

使用 OpenID Connect,它是 OAuth 2.0 的标准化扩展配置文件,您可以通过 3rd 方提供商对用户进行身份验证。还有许多提供者创建了自己的 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 登录协议不提供标准化声明,因此您需要对每个提供者进行自定义处理(映射/翻译)。

于 2015-01-07T10:17:25.193 回答