facebook - 当用户从 Facebook Canvas 页面注销时,如何删除我们的应用程序 session ?

标签 facebook

我遇到一种情况,当用户登录我的应用程序时,我创建自己的 session 变量。 每当我的用户从我的应用程序注销时,我都会清除自己的 session ,然后也调用 fb 注销..

$facebook = new Facebook(array(
'appId'  => $this->key,
'secret' => $this->secret,
));
$logoutUrl = $facebook->getLogoutUrl(array('next' => my url));
Yii::app()->request->redirect($logoutUrl);

但是,当我的用户通过 Canvas 访问应用程序时,如果他们从 Facebook 本身注销,那么我无法跟踪他们何时注销 Facebook。因此,我的 session 值保留在那里,当我与其他用户再次登录时,旧 session 仍然存在。

我该如何处理这个问题?有什么方法可以找出用户从 Facebook 注销的事件,并且我也可以删除我的 session 吗?

最佳答案

旧 session 导致什么问题?通常,即使另一个用户的先前 session 仍然存在,我也不认为以其他用户身份登录会导致任何问题,因为再次登录的行为会“重置”属于新用户的任何 session 值。或者,如果更简单的话,登录操作将清除所有现有 session 并启动一个新 session 。

通常应该有类似的东西来访问 Canvas 。在这种情况下,接收signed_request参数可以被视为新的登录操作,清除任何旧的 session 值或至少检查它们是否与当前用户匹配。

如果一些其他问题是由 session 闲置引起的(比如可能显示人们已连接,但实际上并未连接),那么您可能需要实现一个定期过程,根据某些不活动阈值清除 session 。这并不优雅,但它是捕捉用户根本没有注销而只是关闭浏览器之类的情况的唯一方法。

关于facebook - 当用户从 Facebook Canvas 页面注销时,如何删除我们的应用程序 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7885467/

相关文章:

java - Facebook:获取 session key 时签名不正确 (104)

javascript - 使用 es6 与 native react 创建计时器

facebook - FQL 搜索新闻提要

facebook - 同一页面上的多个 Facebook opengraph 对象

facebook - 为什么我的机器人响应 MethodNotAllowed 错误?

javascript - Facebook - JavaScript SDK - 如何自动请求许可

android - 如何在 android 中使用 Bundle 标记 FB 事件

javascript - 单击按钮时的 Facebook 点赞框事件

ios - 用于在 ios 9 方法 ios swift 中登录的 facebook openurl

java - Facebook Android SDK 需要 API 15 : Android 4. 0.3 或更高版本。我应该使用工具:override to force usage?