我有一个Node.js Web 应用程序,它使用 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 代码,因此相对受到同源策略攻击的保护。