0

当Facebook会话与我的应用程序到期时,我必须使用JavaScript SDK来创建新会话。这非常令人讨厌,因为用户觉得他们偶尔会注销,因为我会执行大部分检测服务器端。然后,当他们重新加载页面并且javascript已经执行时,会话被重新创建。为什么PHP SDK不能设置Facebook会话?

我知道我可以很简单地通过使用javascript来显示消息说'请重新加载页面'(很像StackOverflow),但是,我不希望我的用户必须这样做。我接受PHP SDK无法做到这一点,但是我可以使用PHP而不是Javascript来实现它吗?

任何人都可以解释为什么PHP不能做到这一点?

回答

1

PHP在您的服务器上运行,这与Facebook的服务器无关。请记住,Cookie已锁定到原始网域。 Cookie似乎是由您的服务器设置的,并且具有“yoursite.com”的起源域,而不是“facebook.com”。另一方面,JS运行在客户端上,任何对Facebook服务器的请求也将服从由Facebook服务器设置的任何cookie。

+0

PHP不能使用curl或file_get_contents来请求设置cookie的PHP页面吗?或者cookies没有包含在这些头文件中? – 2012-02-14 17:32:24

+1

您可以进行任何您想要的cookie操作,但您的应用程序发送给客户端的任何cookie都会锁定到您的服务器的域中。你的服务器不能设置一个实际上会发送到Facebook服务器的facebook cookie,因为cookie只会被发送回你的服务器。如果这是可能的,那么在用户的银行网站上窃取/设置cookie会很微不足道(例如) – 2012-02-14 17:35:10

+0

不,我完全理解,我不是那个意思。 facebook域名必须为Facebook设置cookie,这是常识。我的意思是,我的服务器可以使用上述函数之一调用facebook域上的页面,从facebook服务器设置facebook cookie吗?例如file_get_contents(facebook.com/cookie.php)?或者这不起作用,因为它仍然来自我的服务器? – 2012-02-14 17:40:29