我在我的網站上設置了Facebook Connect,登錄工作正常。我設置了一個監聽器來檢測登錄狀態的變化,如下:刷新Facebook Connect會話的頻率如何?
FB.Event.subscribe('auth.sessionChange', function() {
window.location.reload();
});
一切都很好。或許20分鐘後,將瀏覽器窗口打開導致頁面重新加載。所以auth.sessionChange在某個時間間隔內觸發。這可能會造成嚴重破壞,特別是如果最後一頁是POST表單提交。
在FB文檔中,它表示「只要用戶對您的應用程序處於活動狀態,會話就會隨着時間刷新。」此會話多久刷新一次?
如何防止頁面重新加載,如果不需要?一個條件可能在該函數內?
編輯 - 添加澄清信息:
我想我會添加一些信息給那些提供的建議更多去(感謝到目前爲止BTW):
我的原因監聽器觸發重新加載是因爲我希望用戶在每次訪問時都登錄到站點 - 如果他們已經在FB中進行了會話。我正在用JS SDK檢測一個活動會話,我知道它可以自己登錄,但是我需要在JS完成檢測後觸發頁面重新加載,以便爲該站點設置PHP會話 - 必需的步。沒有先讓JS檢測瀏覽器中的FB會話,我就無法進行PHP登錄。
Facebook不會阻止它,事實上很多工程師建議你使用它。關於如何開發Facebook應用程序的書甚至包含了有關如何在大多數應用程序中使用它的摘錄,除了那些頁面瀏覽量很大的應用程序外。上面他正在做的事情可能是offline_access工作得最好的情況,否則用戶將被要求更頻繁地刷新頁面,例如10分鐘。 –
當頁面重新加載時,請求'offline_access'權限只是爲了不「double」發佈表單不是一個很好的理由(至少對我而言)。雖然這個權限可以在用戶已經登錄時使用(即使我不能想到一個案例),但是當用戶當前沒有登錄到Facebook時,這個權限是應用程序需要的「離線」活動。 – ifaour
另請注意,問題中有兩個部分:1)如何避免重新加載(我建議回答)2)事件被調用的頻率(我不知道答案) – ifaour