是否可以强制刷新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之间进行通信似乎是一个真正的挑战,这给我带来了很多问题。