我有一个使用Oauth 2与Facebook集成的应用程序。
我可以使用FB进行授权,并很好地查询其REST和Graph API,但是当我授权使用FB创建活动的浏览器会话时。然后,我可以注销应用程序,但是与FB的会话仍然存在,因此,如果其他任何人使用浏览器,他们都将看到以前的用户FB帐户(除非以前的用户也手动注销了FB)。
我要授权的步骤是:
- 致电[LINK: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中注销。有观点认为这有点愚蠢,但是如果有任何实际的实现方法,我很乐意遵守。
我看到了以下建议:
答:我使用Javascript API登出:FB.Connect.logout()。好吧,我尝试使用它,但是它没有用,而且我不确定如何使用,因为我在网站上未以任何方式使用Javascript API。该会话不是由Javascript API维护或创建的,因此我不确定该如何终止它。
B.使用[LINK:facebook.com/logout.php]。前一段时间,一位管理员在Facebook论坛上提出了此建议。给出的示例与获取FB会话的旧方法(非oauth)有关,因此我认为我无法在我的情况下应用它。
C.使用旧的REST api expireSession或revokeAuthorization。我尝试了这两种方法,尽管它们确实使Oauth令牌过期,但它们不会使浏览器当前正在使用的会话无效,因此它没有任何作用,用户也没有退出Facebook。
我确实有点松懈,Facebook文档不完整,模棱两可,而且效果很差。论坛上的支持不存在,目前我什至无法登录Facebook论坛,除此之外,他们自己的FB Connect集成甚至无法在论坛上使用。不会激发太大的信心。
Ta为您提供的任何帮助。德里克
ps。不得不将HTTPS更改为LINK,因果报应不足以发布链接,这可能足够公平。