用于存储FB或Google+的SSO信息的数据库表结构

时间:2014-01-27 23:45:22

标签: facebook-graph-api oauth single-sign-on google-oauth

我有一个网络应用程序,我想使用用户的Facebook或Google + / Google App帐户添加单点登录功能。

我有一个USERS表,用于存储用户的登录信息。无论是否使用FB或Google +注册,所有用户都必须在此表中拥有记录。

我想弄清楚我需要存储在数据库中的信息,以便将USERS表记录链接到FB或Google信息。

Facebook documentation states

  

应用应将令牌与user_id一起存储在数据库中   识别它。

我应该创建一个名为SSO_LOOKUP的表,其中包含以下列:

  • USER_ID //链接到我的USER
  • 的用户ID
  • PROVIDER_ID //用户的FB或Google帐户ID
  • PROVIDER_TYPE //表示是Google,FB,Twitter等。
  • ACCESS_TOKEN

2 个答案:

答案 0 :(得分:1)

对于SSO登录,您必须拥有user_id和一些基本详细信息,以便您连接到FB或谷歌

  • 提供商:“它将是FB或谷歌或未来的任何东西”
  • 令牌:“我们从FB和Google收到此令牌。如果是FB,则为 大约3个月后过期,因为谷歌没有到期 据我所知“
  • token_expired :“因为在FB令牌中过了一段时间所以你可以拥有 如果您需要在该持续时间之后刷新它,那么这个标志就位了“
  • user_id :“这是您的用户ID:
  • uniqueid :“这是您从FB和Google获得的唯一ID。 这有助于在FB / Google“
  • 中识别您的用户

这些是您可以添加的最小字段,甚至可以帮助您扩展应用。从某种意义上说,如果你想从谷歌和FB那里拉取或推送数据,那么Access_token和unique_id会对你有帮助。

此外,如果您想查看某些发布源,那么您可以在github上看到一些代码,例如 django-social-auth

有关详细信息,请参阅google documentationGoogle OAuth2

希望这会有所帮助。

答案 1 :(得分:0)

从技术上讲,您真正需要存储的是Refresh Token和某种标志类型标识符,它会告诉您它是Facebook还是Google刷新令牌。然后,您可以查询API以获取所需的信息。存储用户ID是一个好主意,因为如果他们退出,那么即使刷新令牌已经改变,你仍然会知道它是谁。其他任何东西都有点过分杀人,因为当你拨打电话时,无论如何你都会从API获取信息。

如果您想要存储名称和最近的图片,您可以在获取信息之前显示它们。然后在您第一次访问API后更新对数据的任何更改。但它基本取决于你如何设计东西,以及我们在这里谈论的是什么样的应用程序。