2012-01-30 60 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