检测用户是否已退出Facebook

时间:2012-04-12 09:20:25

标签: facebook node.js facebook-oauth

我有一个Node.js网络应用程序使用Facebook OAuth 2.0来使用everyauth注册/登录/注销用户。

我在我的Facebook应用程序上启用了对脱机访问的弃用,所以现在我收到的令牌在〜两个月后过期,或者当用户更改密码时,或者当她删除应用程序时,但是当她退出时Facebook的

我的应用程序嵌入到多个网站的iframe中,用于将更新推送到用户的Facebook时间线。

假设我在站点A和站点B上安装了我的应用程序。如果用户X在A上登录我的应用程序,他也会登录到我在B上的应用程序,因为iframe保留了会话。

问题

如果用户X退出Facebook,则在安装了我的应用程序的网站上使用同一台计算机的任何其他人都将代表X推送更新。

在推送更新之前,有没有办法确定X是否仍然登录Facebook?

换句话说,我需要类似于Facebook的JavaScript SDK FB.getLoginStatus,但在 Node.js 的服务器端。最好的事情是Graph API来电,但我找不到合适的URL

不完善的解决方案:

最后,我选择了@ NitzanTomer在评论中描述的解决方案。我使用JavaScript SDK及其FB.getLoginStatus方法检查我的应用程序的当前用户是否仍在Facebook上登录。这远非理想:它适用于我的情况,因为我在iframe中运行JavaScript代码,从而相对保护免受same-origin policy的攻击。<​​/ p>

2 个答案:

答案 0 :(得分:1)

您可以使用FB.getLoginStatus检查用户是否连接到Facebook: https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/

答案 1 :(得分:0)

amachang的facebook-node-sdk中没有

getLoginStaus函数,但你可以使用的是getLoginStatusUrl函数:facebook-node-sdk

如果返回的值是您分配给ok_session属性的网址,则用户已登录。您无法确定通过

授予您的应用的权限