Facebook fbsr cookies快速到期

时间:2012-10-05 03:22:45

标签: facebook cookies facebook-javascript-sdk

所以我正在围绕facebook oauth构建我的应用程序,并希望使用fbsr_令牌来识别登录用户(以便facebook-js的东西与我的网站保持同步)。

不幸的是,似乎这些fbsr_ * cookie设置为在一天内到期。这意味着如果用户一天后访问我的网站,他们就没有cookie,并且会显示退出的体验。

然后facebook-js运行,识别它们,创建fbsr_ * cookie,然后给我一个回调。我可以选择进行硬页面刷新(相当刺耳),或尝试进行花哨的就地ajax更新(大量复杂的代码,仍然有点刺耳)。这些cookie没有更长的到期时间是否有原因,以便用户无缝登录?大多数网站允许您在登录时“记住我”以避免持续的Cookie过期,因此我宁愿不让我的基于Facebook的网站一直让我退出。

我能做些什么吗?我怀疑我可能会切换到serverside-oauth,我自己管理身份和cookie过期(是吗?)。但似乎很奇怪,客户端 - 奥祖特会有这样的限制,所以我希望我错过了一些东西。

1 个答案:

答案 0 :(得分:1)

  

我能做些什么吗?

不,不是真的。

如果用户当前登录Facebook,唯一的方法是查看域facebook.com的cookie集。

JS SDK能够做到这一点,因为它运行在客户端,并且可以发出跨域请求来检查这些cookie是否已设置。

但是无法从您的域检查服务器端的cookie - 您的服务器只能访问为您自己的域设置的Cookie。

  

我怀疑我可能会切换到serverside-oauth,我自己管理身份和cookie过期(是吗?)

如果您在自己的域中设置自己的Cookie,则表示您正在实施自己的登录系统。

即使你“伪造”了JS SDK在你的域名下设置的cookie,它也不会带来相同的结果。

您的域名中可能有一个Cookie,上面写着“是的,用户XYZ已登录到Facebook” - 但不一定是这种情况。我可以在此期间退出Facebook,而你的cookie根本不会反映出来。所以无论你接下来要做什么,比如f.e.代表我从你的应用程序发布一些东西很可能会失败,因为你只是我仍然登录到Facebook,但实际上你不再拥有有效的访问令牌了,因为我并没有真正登录Facebook。

  

然后facebook-js运行,识别它们,创建fbsr_ * cookie,然后给我一个回调。我可以选择进行硬页面刷新(相当刺耳),或尝试进行花哨的就地ajax更新(大量复杂的代码,仍然有点刺耳)。

这是你唯一可行的选择。