我有一个网络应用程序,允许通过 Facebook , Google 和 Windows Live 进行注册和身份验证。每个OAuth请求都具有从身份验证提供程序检索关联电子邮件地址所需的范围。
当前情况是根据提供商和提供的标识符创建帐户。这意味着,如果用户使用多个提供商登录,则该用户将在该网络应用上拥有多个帐户。
即使使用多个提供商,我也希望理想情况拥有单一帐户。我正在考虑使用电子邮件地址来查看用户是否存在帐户。如果存在,请使用基于电子邮件地址的帐户。
这是多么安全/可靠?所有OAuth提供商都提到验证电子邮件地址吗?更好的方式?
编辑:进行测试并想出来。仍在寻找进一步的建议:)
FaceBook: Cannot authenticate with unvalidated e-mail. Additional e-mail will not appear until validated.
Google: Provides `verified_email`. Additional e-mail will not appear until validated.
Windows Live: Cannot authenticate with unvalidated e-mail. Additional e-mail will not appear until validated.
答案 0 :(得分:4)
有趣的问题。您可以尝试使用电子邮件检查用户是否存在,但问题是,用户可能正在为不同的提供商使用不同的电子邮件地址。
我的建议是询问用户(一旦他/她使用其中一种方法登录您的应用程序)将其他提供商附加到此帐户,因此他/她也可以使用它们登录您的应用程序。
它并不能完全解决您的问题(我不确定解决方案是否存在),但用户将有更多的控制方式,您将减少每个用户的帐户数量。