【发布时间】:2012-02-08 08:05:35
【问题描述】:
根据 SDK,我将 logout.php 与重定向一起使用:
https://www.facebook.com/logout.php?confirm=1&next={SOME URL}&access_token={ACCESSTOKEN}
它可以让我退出,但它也会让用户退出 facebook。有没有办法在不退出 facebook 的情况下退出我的 OAuth 会话?
【问题讨论】:
根据 SDK,我将 logout.php 与重定向一起使用:
https://www.facebook.com/logout.php?confirm=1&next={SOME URL}&access_token={ACCESSTOKEN}
它可以让我退出,但它也会让用户退出 facebook。有没有办法在不退出 facebook 的情况下退出我的 OAuth 会话?
【问题讨论】:
这是在 Facebook 平台上开发的许多烦人的事情之一。通过浏览器会话注销的唯一方法是使用他们的 javascript 注销功能或您尝试过的重定向,但两者都会将用户从 Facebook 注销,这从用户的角度来看非常烦人。问题是由于跨域限制,您无法访问他们为您的应用设置的 cookie 以将其删除,因此您只能使用 Facebook 提供的有限选项。如果您没有提示离线访问,您可能只是忘记了用户访问令牌,它会在一小时后过期。虽然问题仍然存在,cookie 仍然设置在那个小时内。
【讨论】:
是的,我自己也遇到了同样的问题。不要做 logout.php 或 JS SDK 的 FB.logout()。而是使用 HTTP Delete 命令调用 Graph API 到 me/permissions。这将杀死访问令牌,从用户的应用程序列表中删除该应用程序并维护其浏览器的 Facebook cookie。您可以将其称为服务器端或客户端。这是客户端Javascript SDK方式:
FB.api("me/permissions","delete", function(response){/*do something if you want*/})
【讨论】: