我正在考虑将基于Facebook JavaScript的应用程序与现有网站捆绑在一起,该网站拥有自己的用户帐户,但对特定用户情况有疑问。
该网站几乎100%的时间都来自“共享”计算机,就像在职业中心找到的那样。用户A进入我的网站,登录该网站,然后授权Facebook应用程序,将其会话存储在浏览器中,并有效地将其签名到Facebook.com。
用户A现在通过退出我的网站离开了我的应用程序 - 但没有关闭浏览器。
用户B到达,登录时登录我的网站,但Facebook会话仍处于活动状态(由于浏览器保持打开状态),因此我所包含的任何FB应用程序集成都将显示为仍然是用户A,正确的吗?
所以问题是,有什么建议的方法来解决这个问题?我想到了两个选择:
当用户退出我的网站时,我会触发FB.logout调用,以便所有会话都被终止。优点 - 我可以确保用户登录该网站不会有旧的会话。缺点 - 离开后不久返回的用户将不得不重新登录FB以及我的网站以查看FB集成 - 我希望避免用户总是必须进行两次登录。其次,当他们离开我的网站时强制FB.logout杀死他们在facebook.com上的任何活动会话,这会导致糟糕的用户体验,因为他们不会“得到”为什么退出我的网站与facebook有关。 com,然后必须重新登录facebook.com。
第二个选项是,当用户授权FB应用程序时,我会获取其成员ID并在本地和持久存储(数据库)。然后,当用户返回站点并登录时,我会检查他们的FB身份验证状态,如果登录到FB,请提取其成员ID并将其与我本地存储的身份进行核对。如果它们匹配,我有正确的用户,如果没有,我做FB.logout并让他们登录FB。优点 - 这应该确保我始终拥有网站的正确用户。缺点 - 不确定是否可以存储会员ID。
在确保当前用户确实是与FB帐户关联的用户时,对“最佳做法”的任何建议或指示,特别是在会话可能重叠的“共享计算”情况下?
由于
答案 0 :(得分:0)
第二种选择让我觉得是更好的选择。你确实可以存储用户的facebook id。通过在本地存储我假设你正在使用cookie;但是在数据库中存储也是可行的。
Facebook用户ID应以BIGINT(20)数据类型存储 - 例如来自facebook的推荐。
取自facebook api refrence的用户部分:
看起来他们改变了他们的推荐......