Facebook社交注册的通用架构

时间:2015-08-02 17:23:21

标签: facebook

我只是潜入社交登录背后的逻辑。

到目前为止,我提出了使用Facebook API创建用户身份验证的想法。

令我困惑的一点是web-app / -portal的逻辑架构,它使用社交登录进行用户注册。当Facebook返回网站时#34;登录Facebook"这个网站现在应该怎么做?在自己的用户数据库或其他东西中创建新的用户条目?当用户再次回来并再次使用FB登录时,网站是否应该从facebook响应中获取用户名和电子邮件,并且应该将本地用户数据库与某些条目进行比较(在请求数据库输入数据之前)在FB的明文用户名上?

你知道,我不知道这种登录解决方案的通用架构。我甚至不知道以适当的方式在数据库中读取和存储用户的基本机制(仅通过纯文本用户名或电子邮件获取用户信息,因为密钥听起来对我来说非常不安全)。

我知道这是一个非常抽象的问题。

1 个答案:

答案 0 :(得分:1)

唯一的好答案是"这取决于你的用例"。

登录facebook

  • 某些应用程序希望拥有自己的用户帐户。登录后,您可以要求他们选择用户名和密码。
  • 有些应用需要免费信息。登录后,您可以询问用户以获取更多信息。
  • 有些应用程序不想要或不需要任何其他信息。用户登录Facebook后,向他们显示登录视图。
  • 您不会使用他们的Facebook电子邮件对用户进行身份验证,您可以使用他们的UID对其进行身份验证。电子邮件发生变化,uids没有。

存储什么。

  • 通常,您创建一个本地用户,该用户拥有对Facebook uid的引用。
  • 如果您需要电子邮件和姓名等特定数据,则可以将这些数据复制到本地用户帐户。用户access_token将在一段时间后过期,因此您可能需要保留本地参考。
  • 如果您的应用仅与Facebook进行互动,并且确实没有自己的状态,那么您就不需要在本地保存任何内容。
  • 如果您需要在进行身份验证后继续从Facebook请求有关用户的信息,您将存储他们的access_token,但如果用户停止使用您的应用,它将会过期。

在覆盖用户编辑的数据时。

  • 如果用户编辑其本地帐户中的字段,则您不应覆盖该信息,因为用户有意覆盖该信息。要使数据回滚,会令人困惑。如果您只是在本地引用他们的Facebook信息,那么请务必更新它,但不要以他们可以编辑它的方式呈现它。
  • 如果您希望允许用户同时拥有本地数据并需要引用其Facebook数据,则可以保留user.emailuser.facebook.email字段。