【问题标题】:How to manage users account from multi-provider (facebook, twitter) in my website?如何在我的网站中管理来自多提供商(facebook、twitter)的用户帐户?
【发布时间】:2023-03-20 03:15:02
【问题描述】:

我即将使用其中一个多提供商身份验证框架 Opauth 或 Hybridauth(不知道哪个是最好的,但我对第二个有一点偏好)所以结果是我必须管理多个帐户。

事实上,我已经有了自己的帐户管理(登录名+密码+电子邮件),去年我就有了 facebook 用户。现在我将不得不处理 Twitter 帐户、linkedin 帐户等... 所以问题很简单:如何管理用户名? 例如,约翰在我的网站上创建了一个帐户。所以“约翰”登录/用户名被采用。但是,如果另一个来自 Facebook 的 John 和另一个来自 Twitter 的 John 来了,我该怎么办? 在 Stackoverflow(或其他地方),有什么做法?

我不希望约翰代表另一个约翰写作。今天用我自己的系统,我验证登录名(用户名)是唯一的。如果不是,我拒绝用户。但是现在呢?

我以为我可以检查电子邮件,但是...我了解到电子邮件地址不能成为密钥,因为 Twitter 不会将其提供给您。

希望我足够清楚:)

问候

【问题讨论】:

    标签: facebook twitter user-management social-media hybridauth


    【解决方案1】:

    正如您所说,仅从不同来源检索用户名并存储它是不可能的。我不知道它是如何在 stackoverflow 中完成的,但是如果您尝试注册名称是可选的,那么它可能不是唯一键。我在这里看不到使用 twitter 登录的方式,所以我敢打赌,电子邮件是唯一的密钥。

    我会尝试回答您的问题,但我只使用了 facebook API,所以也许其他人无法做到这一点。我想每个 API 都为您提供了一些可以存储在数据库中的内容,并在以后使用它来根据他们的 API 识别您的用户。

    如果您允许用户在 facebook(或 gmail、twitter...)上注册,那么您可以使用以下方法(我敢肯定还有更多):

    1. 他们总是使用 facebook(或 twitter、gmail...)登录:您使用 API 提供的密钥和您可以收集的其他有用信息将他们的记录存储在您的数据库中。正如您所说,每个 API 都为您提供不同的东西,因此您必须提前考虑为用户提供良好体验真正需要什么:需要他们的名字吗?年龄?如果您需要比 API 提供的更多的数据,您应该跳到下一个方法或预取它并使其之前可编辑。在这里,您不会要求您的用户输入密码,因此他们只能使用 facebook 而不是登录表单登录,如果用户再次尝试使用 facebook(或 twitter、gmail)进行身份验证,您知道您必须查找和验证哪个密钥您的使用。

    2. 可以创建一个帐户并将其与 facebook(或其他)链接:您请求 facebook 许可,然后为他们预先填写表格以提供丢失的数据(密码、邮件,如果他们使用 twitter.. .) 然后创建存储 API 提供的唯一密钥的记录,如果他们使用他们的 Facebook 帐户登录,则完全按照步骤 1 进行操作。如果您要求输入密码和电子邮件,他们也可以使用标准登录表单。

    3. 您可以使用第一种方法并要求用户更改与其他用户(在您的情况下为名称)冲突的属性,甚至要求根据他们使用的社交网络来填充缺失的内容登录。您可以使用姓名+姓氏作为用户名,以减少冲突的可能性,如果这是您想要存储以识别您的用户的内容。

    希望对你有帮助

    【讨论】:

    • 感谢@LuisClemente 的帮助。事实上,我对管理唯一 ID 没有任何问题。每个提供商都管理单一性,所以没有问题。我的系统也管理它,但基于电子邮件+登录。问题是,例如当 John 收到一条新闻时,如何知道 John 和 John 之间的区别。我刚刚看到 Stackoverflow 在 URL 中添加了一个唯一的 ID。我搜索了所有“Pierrot”并且存在 2 个 :) ==> SO.com/users/ 985357 /pierrot
    • @Pierrot 那么这就是你的答案。看起来这里的名字可以重复(所以非唯一键),如果你看到他们的个人资料(或者他们有不同的头像或其他东西 XD),你只能分辨出区别。正如我所说,这完全取决于您希望为用户提供的体验以及对您的网站正常运行的重要性。
    • 是的@LuisClemente,你是对的。我必须补充地改变我的网站的行为。但我认为这是最好的,正如我在janrain.com 上阅读的那样,我将能够通过 OpenID 帐户管理来拖动更多成员。非常感谢。讨论有助于更清楚地了解事情:)。
    • @Pierrot 没问题,如果您认为这是一个有效的答案,请标记接受标记 ;) 。问候
    【解决方案2】:

    HybridAuth 为您提供了一种将您的网站与社交媒体集成的绝佳方式...

    http://hybridauth.sourceforge.net/

    这也应该有帮助......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-17
      • 2013-10-27
      • 2015-08-09
      • 2019-12-30
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 2013-01-04
      相关资源
      最近更新 更多