【发布时间】:2011-10-07 14:44:23
【问题描述】:
我知道周围有类似的问题,但似乎没有一个问题能完全解决我遇到的问题,或者指的是较旧的非 OAuth 版本的 SDK。
我正在使用 Facebook 提供的 JS 和 PHP SDK。使用 JS 完成身份验证,然后设置一个允许 PHP SDK 进行身份验证的 cookie,如 Facebook 推荐的那样。
直到用户在他们的网站上退出 Facebook(即他们不在我的网站上使用 FB.logout 方法)之前,这种方法都非常有效。 auth.statusChange、auth.authResponseChange 或 auth.logout 方法都不会立即或在下一个页面加载时触发。但是,我可以看到,即使我在 Facebook 网站周围单击,cookie 也会被更改(但不是 fbsr_xxxxxxxxxx 用于签名请求的那个)。
我的困难是,在下一页加载时,我不知道用户退出了 Facebook。因为我仍然有带有访问令牌的 'fbsr_xxxxxxxxxxxx' cookie,所以我可以继续通过 PHP SDK 进行 API 调用,但 JS SDK 变得完全没有响应。方法要么抱怨没有访问令牌,要么无法完全运行它们的回调函数。
我在这里遗漏了一些非常明显的东西吗?我完全感到困惑,所以非常欢迎任何帮助。
模糊邓禄普
【问题讨论】:
-
自从搬到 Oath 后我也遇到了同样的问题。您在这个问题上取得了任何进展吗?
-
恐怕不是。我想我可能不得不手动触发 FB.Cookie.clearSignedrequestCookie() 方法。另外,是的,我在使用 OAuth 版本之前也没有这个问题。
-
在我看来,您的 auth.authResponseChange 代码可能有问题。您可以发布您尝试使用的内容吗?它立即为我触发
-
这样的事情真的很简单:FB.Event.subscribe('auth.authResponseChange', function(response) { alert('auth reponse change'); window.location.reload(); } );需要明确的是,当用户退出 Facebook 与您的网站交互时,您会触发事件吗?大概不是马上,而是在下一页加载?我不明白这个。 cookie 仍然存在,但 JS SDK 停止工作。
-
我的问题是特定于注销。当用户首先从 FB 注销时,注销 js 因无效令牌错误而失败。我已通过将以下内容更改为:
<a href="javascript:fb_logout();">Log Out</a>(js)var fb_logout = function(){ FB.logout(function(response) { document.location = "http://mysite.url/logout"; }; };来解决我的问题:@987654323 @(js)var fb_logout = function(){ FB.logout(function(response) { }); };现在不依赖FB的响应了