是否可以强制刷新Facebook会话,或者是否可以在文档中多次调用“ FB.init”函数。由于缠绕了很长的时间,因此我不会过多地尝试实现的目标,但是我已经在此方面进行了一段时间的尝试,并且这样做似乎绝对是必要的。

我有一个每30秒调用一次的脚本,该脚本检查facebook用户是否已登录,只需使用以下命令即可实现:

window.fbAsyncInit=function(){
    // Initialize the Facebook object
    FB.init({
        appId:"123",
        status:true,
        cookie:true,
        xfbml:true,
        oauth:true
    });
    // Check the Facebook session status every 30 seconds
    setTimeout(function(){
        // Pass the Facebook object to the welcome function
        fb_welcome(FB);
    ,30000);
};


在“ fbWelcome”功能中,我测试是否使用getLoginStatus功能通过Facebook登录了用户。根据响应,然后更改页面上的元素。但是,我要做的一件事就是使所有这些都出错。

如果用户已登录Facebook,那么我将使用ajax向我的API发送请求,该请求将返回Facebook Users详细信息。该API使用PHP与Facebook API通信。如果在页面加载时用户登录到Facebook,则不会有任何问题。但是,如果用户未登录Facebook,并且在我的网站上同时在另一个选项卡上登录Facebook,则会话不会刷新,并且由于访问令牌和签名的请求无效,因此无法访问详细信息。因此,我需要一种使用javascript刷新会话中访问令牌和签名请求的方法,以确保PHP API可以正确读取它们。

我非常确定,通过再次调用FB.init函数,可以解决此问题,因为它将刷新会话。但是,我不确定是否要在每个页面上多次调用此函数。可以吗?会把事情搞砸吗?

请注意以下几点:


我知道我可以通过Javascript SDK和FB.api检索用户详细信息,但是由于某些特殊原因,我不想这样做
我也知道我可以将访问令牌和签名的请求传递给PHP API,但是由于某些特殊原因,我也不想这样做


任何帮助表示赞赏

最佳答案

尽管我没有回答我的问题,但是我已经使用不想使用的解决方案之一解决了这个问题。现在,我无法使用新的Facebook会话传递给PHP API,而是使用Javascript API而不是我自己的API来检索用户详细信息。

我尝试再次调用init函数,尽管可以,但是它绝对没有效果,而且我真的不希望那样做解决方案,因为我不必重新初始化Facebook库即可刷新会话。

无论如何,我将保持开放状态,以允许其他人发表他们的观点(如果有的话)。在某些情况下,尝试在PHP和Javascript SDK之间进行通信似乎是一个真正的挑战,这给我带来了很多问题。

10-04 23:45
查看更多