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