Facebook Oauth退出

Der*_*est 69 facebook oauth logout

我有一个使用Oauth 2与Facebook集成的应用程序.

我可以使用FB进行授权并完美地查询他们的REST和Graph API,但是当我授权使用FB创建活动的浏览器会话时.然后我可以很好地注销我的应用程序,但是与FB的会话仍然存在,因此如果其他人使用浏览器,他们将看到以前的用户FB帐户(除非之前的用户也手动注销了FB).

我要授权的步骤是:

  1. 致电[LINK:graph.facebook.com/oauth/authorize?client_id ...]

如果用户的浏览器还没有活动的FB会话,则此步骤将打开Facebook登录/连接窗口.一旦他们登录到Facebook,他们就会使用代码重定向到我的网站,我可以交换一个oauth令牌.

  1. 使用(1)中的代码调用[LINK:graph.facebook.com/oauth/access_token?client_id ..]

现在我有一个Oauth Token,用户的浏览器登录到我的站点,然后登录到FB.

  1. 我打电话给一堆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集成甚至不能在论坛本身上运行.不会激发很多信心.

您可以提供任何帮助.德里克

PS.不得不将HTTPS更改为LINK,没有足够的业力来发布可能足够公平的链接.

Chr*_*oph 41

我有同样的问题.我也使用oauth登录(我正在使用RubyOnRails),但是对于logout,我使用JavaScript这样做,使用如下链接:

<a href="/logout" onclick="FB.logout();">Logout</a> 
Run Code Online (Sandbox Code Playgroud)

这首先调用该onclick函数并在facebook上执行注销,然后/logout调用我的站点的正常功能.

虽然我更喜欢服务器端解决方案,但至少它做了我想要的,它会在两个站点上记录我.

我对Facebook集成的东西也很陌生并且第一次使用它,但我的总体感觉是文档遍布整个地方,有很多过时的东西.

  • 我的注销页面必须进行一些 FB 登录检查。FB.logout() onclick 在重定向之前没有足够快地完成。我必须延迟重定向以确保 FB.logout() 首先成功完成。 (2认同)

小智 18

此解决方案不再适用于FaceBook的当前API(似乎无意中开始)

http://m.facebook.com/logout.php?confirm=1&next=http://yoursitename.com;
Run Code Online (Sandbox Code Playgroud)

尝试在您的注销链接或按钮上提供此链接,其中"yoursitename.com"是您想要在注销后可能是您的主页重定向的地方.

有用..

  • 不幸的是它似乎不再有效! (15认同)
  • 但是如果用户没有_want_他们的facebook会话被销毁怎么办?如果他们已经登录到脸书,然后登录到您的网站,然后退出您的网站,然后返回到Facebook并且不明白他们刚刚退出的原因怎么办?这似乎不是完美的解决方案...... (5认同)
  • 几个月前提出这个问题时,单点退出是facebook条款和条件的要求.我不确定它是否仍然存在,我并不反对你,但当时需要它. (2认同)

rus*_*sau 18

此作品以现在-并记录在Facebook的网站@ http://developers.facebook.com/docs/authentication/.不知道最近它被添加到文档中,当我在2012年2月检查时非常确定它不存在

您可以通过将用户重定向到以编程方式登录Facebook用户

https://www.facebook.com/logout.php?next=YOUR_REDIRECT_URL&access_token=USER_ACCESS_TOKEN

  • 无法让这个工作.使用服务器端连接方法.此外,如果文档链接指向此方法,它就不再存在了. (5认同)

Tea*_* Wu 10

我可以通过重定向用户以编程方式将用户登出Facebook

https://www.facebook.com/logout.php?next=YOUR_REDIRECT_URL&access_token=USER_ACCESS_TOKEN

下一个参数中提供的URL必须是与应用程序设置中定义的应用程序具有相同基本域的URL.

更多细节:https://developers.facebook.com/docs/authentication


Zac*_*ger 5

你可以这样做access_token:

$access_array = split("\|", $access_token);

$session_key = $access_array[1];
Run Code Online (Sandbox Code Playgroud)

您可以$session key在PHP SDK中使用它来生成功能注销URL.

$logoutUrl = $facebook->getLogoutUrl(array('next' => $logoutUrl, 'session_key' => $session_key));
Run Code Online (Sandbox Code Playgroud)

这结束了浏览器的facebook会话.

  • Bob,这是注销URL的结构:https://www.facebook.com/logout.php?api_key = <%= api_key%>&next = <%= urlencoded_redirect_link%>&session_key = <%= session_key%>其中session_key是如上所述的访问令牌的中间部分. (2认同)