强制刷新Facebook会话
Force the Facebook Session to refresh
是否可以强制刷新Facebook会话,或者在文档中多次调用"FB.init"函数。我不会过多地详述我试图实现的目标,因为它很冗长,但我已经为此工作了一段时间,似乎确实有必要这样做。
我有一个脚本,每30秒调用一次,检查脸书用户是否登录,这可以简单地实现:
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用户的详细信息。此API使用PHP与Facebook API进行通信。如果用户在加载页面时已登录Facebook,则不会出现任何问题。但是,如果用户没有登录Facebook,并且在我的网站上的另一个选项卡上登录Facebook,则会话不会刷新,详细信息也无法访问,因为访问令牌和签名请求无效。因此,我需要一种方法来使用javascript刷新会话中的访问令牌和签名请求,以确保PHP API正确读取它们
我非常确信,通过再次调用FB.init函数,这将解决问题,因为它将刷新会话。但是,我不确定是否应该在每页调用此函数一次以上。这是允许的吗?它会把事情弄得一团糟吗
只是几个注意事项:
- 我知道我可以通过Javascript SDK和FB.api检索用户的详细信息,但出于特殊原因,我不想这样做
- 我还知道我可以将访问令牌和签名请求传递给PHP API,但由于特殊原因,我也不想这样做
任何帮助都非常感谢
虽然我还没有回答我的问题,但我已经使用了一个我不想使用的解决方案来解决它。我现在使用Javascript API而不是我自己的API检索用户详细信息,因为我无法将新的Facebook会话传递给PHP API。
我试着再次调用init函数,尽管我能够调用,但它绝对没有效果,而且我真的不希望它成为解决方案,因为我不应该为了刷新会话而重新初始化Facebook库。
无论如何,如果其他人有意见的话,我会让他们发表自己的意见。在某些情况下,尝试在PHP和Javascript SDK之间进行通信似乎是一个真正的挑战,我在它方面遇到了很多问题…
也许我不明白你想做什么。但如果你想验证服务器端的facebook会话,只需获取facebook cookie并在服务器端进行身份验证即可获得access_token。将该access_token存储在会话中,然后在每次用户访问您的api时进行验证。只要用户登录了facebook,facebook cookie就应该可用,你只需要验证access_token是否有效。如果没有,请检索新的令牌。如果cookie和令牌都无效,则将用户重定向到init。
- 使用php或javascript从facebook相册URL中删除多余的部分
- 漂亮照片图片库中的Facebook赞按钮
- 包括用于facebook评论框的JavaScript SDK
- 使用Facebook live API创建实时视频对象时的隐私设置
- 有任何可能将facebook实时信使整合到一个网站中
- facebook”;添加评论“;popup获胜'不要消失
- Facebook共享显示一个接一个的空白页面
- Facebook API - 检测会话是否处于活动状态
- Facebook会话在我的应用程序中经常被破坏
- 检查Facebook会话加载
- 强制刷新Facebook会话
- 我在使用Facebook开放图发布操作时遇到问题,因为会话已过期.我该如何解决这个问题
- 使用PHP访问Facebook会话
- Facebook:登录后重定向,用户会话为空
- 从Facebook Connect验证会话是否有效
- 使用Facebook Javascript SDK处理用户会话
- 登录Facebook并在所有子页面上启动会话
- 如何使用Facebook PHP SDK 3.0正确处理会话和访问令牌
- 登录时进行facebook会话检查
- Node.js和passport-facebook不保存会话