2012-01-30 35 views
3

如果FB.init({status:true})導致JavaScript SDK加載狀態,那麼我可以獲得最高效的狀態的方式是什麼?如果FB.init({status:true})導致Javascript SDK加載狀態,我該如何獲取狀態?

我必須使用FB.getLoginStatus()的異步呼叫嗎?或者是否有一種同步方式來獲取可以保存Web請求的狀態?

+0

你可以登錄服務器端的用戶。 – Lix 2012-01-30 20:56:26

+0

但是,對我而言,這是真的,它的內容是靜態的HTML,所有的交互性都在瀏覽器中使用Javascript SDK。即使我在服務器上運行腳本,它也會減慢頁面的響應時間,是不是?即使這樣,Javascript也不會知道這個狀態,反正他也不得不自己打電話給API。 – CoderFromOuterSpace 2012-01-30 21:05:12

回答

1

如果你想用JavaScript做到這一點,那麼唯一的辦法就是撥打FB.getLoginStatus()。但是,如果您擔心響應時間較慢,那麼只要完成成功的授權過程,您就可以將狀態保存在cookie中。

雖然我們談論的是毫秒,但是我會阻止你這樣做。

+0

爲了補充說明,getLoginStatus的響應現在由FB SDK緩存 – PhilT 2015-02-16 20:55:22

+0

從那時起,我開發了https://github.com/gajus/fuss.js,這是一個圍繞fb.js的抽象,它提供了更直觀的API。 – Gajus 2015-02-17 07:33:10

0

檢索狀態的最有效方法是訂閱auth.authRepsonseChange事件。

例如:

var auth_response_change_callback = function(response) { 
 
    console.log("auth_response_change_callback"); 
 
    console.log(response); 
 
}; 
 

 
FB.Event.subscribe('auth.authResponseChange', auth_response_change_callback);

來源:FB event documentation