我有一个使用 Oauth 2 与 Facebook 集成的应用程序。
我可以使用 FB 进行授权并很好地查询他们的 REST 和 Graph API,但是当我授权时,使用 FB 创建了一个活动的浏览器会话。然后我可以很好地注销我的应用程序,但是与 FB 的会话仍然存在,因此如果其他人使用浏览器,他们将看到以前的用户 FB 帐户(除非以前的用户也手动注销了 FB)。
我授权的步骤是:
- 致电 [链接:graph.facebook.com/oauth/authorize?client_id...]
如果用户的浏览器还没有活动的 FB 会话,此步骤将打开 Facebook 登录/连接窗口。一旦他们登录到 Facebook,他们就会使用我可以交换 oauth 令牌的代码重定向到我的网站。
- 使用 (1) 中的代码调用 [LINK: graph.facebook.com/oauth/access_token?client_id..]
现在我有一个 Oauth 令牌,用户的浏览器登录到我的网站,并登录到 FB。
- 我调用一堆 API 来做事:即 [LINK: graph.facebook.com/me?access_token=..]
假设我的用户想要退出我的网站。FB 条款和条件要求我执行单点注销,因此当用户退出我的站点时,他们也会退出 Facebook。有人认为这有点愚蠢,但如果有任何方法可以真正实现这一点,我很乐意遵守。
我看到了以下建议:
A. 我使用 Javascript API 注销:FB.Connect.logout()。好吧,我尝试使用它,但它不起作用,而且我不确定它到底是怎么做到的,因为我没有在我的网站上以任何方式使用 Javascript API。该会话不是由 Javascript API 维护或创建的,所以我也不确定它应该如何过期。
B. 使用 [链接:facebook.com/logout.php]。这是前段时间 Facebook 论坛中的管理员建议的。给出的示例与获取 FB 会话(非 oauth)的旧方式有关,所以我认为我不能在我的情况下应用它。
C. 使用旧的 REST api expireSession 或 revokeAuthorization。我尝试了这两种方法,虽然它们确实使 Oauth 令牌过期,但它们不会使浏览器当前正在使用的会话无效,因此它没有效果,用户没有从 Facebook 注销。
我真的有点不知所措,Facebook 文档不完整、模棱两可而且很差。论坛上的支持是不存在的,目前我什至无法登录 facebook 论坛,除此之外,他们自己的 FB Connect 集成甚至在论坛本身上都不起作用。不会激发太多的信心。
Ta 可以提供任何帮助。德里克
附言。不得不将 HTTPS 更改为 LINK,没有足够的业力来发布链接,这可能足够公平。