带有access_token的logout.php不再起作用

时间:2013-04-11 13:43:39

标签: php facebook logout

几个月前我们建立了Facebook集成,直到本周注销停止工作时,一切都很好。

我们使用:

  • 用于识别用户的JS sdk
  • 来自php的直接API调用(使用file_get_contents)进行大多数事情

对于注销,我们将用户从我们的应用程序中删除(包括删除cookie),然后使用javascript重定向到此网址:

"https://www.facebook.com/logout.php?access_token=". $FB_ACCESS_TOKEN . "&next=" . urlencode($loginUrl)

用于将用户从Facebook登录,然后将其带到我们的登录页面。

现在它让他们登录,并将他们带到

https://www.facebook.com/home.php

这是一个facebook错误,还是我使用的功能并非用于Apps?我猜我可以使用javascript API来实现这个功能,只是想检查一下我应该对我目前的做法做一些小改动。

编辑:

另一个想法(如果有人知道的话)可能是权限的工作方式发生了变化,我打算在用户登录时请求额外的权限?目前我只是要求:

email,publish_actions

5 个答案:

答案 0 :(得分:1)

如果退出网址转到https://www.facebook.com/home.php,则表示访问令牌或下一个网址配置错误。

尝试将下一个网址设置为下一页(例如www.yourapp.com/logout.php),然后从那里重定向到您的应用程序。

答案 1 :(得分:0)

来自Facebook的SDK documentation使用Javascript注销:

FB.logout(function(response) {
  // user is now logged out
})

FB.logout会将用户从您的网站和Facebook中注销。

我建议使用回调重定向用户,而不是直接链接到facebook.com/logout.php

答案 2 :(得分:0)

事实证明我的access_token无效。我将它存储在varchar(150)字段中,但是现在更新的令牌比它长。

因此,当在登录页面上使用时,令牌是正确的,但是在后来的页面上(例如注销)它从数据库中检索并被截断,因此不能再被Facebook解密。

作为参考,对于其他任何人来说,它看起来不像最小长度 - 目前有255个工作,400仍然更安全,但是oauth规范允许任何长度,因此需要一个小文本字段才能完全安全

答案 3 :(得分:0)

这也发生在我身上,我终于意识到这是因为我改变了网站的位置。我确实将OAuth重定向网址更新到了新地方,但忘了在基本设置中更改网站地址....

  1. 转到facebook app console
  2. 转到设置 - >基本。在网站网址中输入我的新网址
  3. 并退出网址再次工作!

答案 4 :(得分:0)

您需要在Facebook App设置中拥有您要重定向到的页面的域

设置->基本->应用域

但是这些域都有规则...

  

应用程序域必须与Facebook Web Games URL(https),移动站点URL,Unity Binary URL,站点URL或安全页面选项卡URL的域匹配。

如果要使用2个不同的URL,则可以同时使用“站点URL”和“安全页面标签URL”

设置->基本->网站->网站网址

设置->基本->页面标签->安全页面标签URL