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

问题描述 投票:2回答:5

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

我们使用:

  • 用于识别用户的JS SDK
  • 大多数情况下,从php直接使用API​​调用(使用file_get_contents

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

"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
php facebook logout
5个回答
1
投票

如果注销URL将您带到https://www.facebook.com/home.php,则意味着访问令牌或下一个URL配置不正确。

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


0
投票

从Facebook的SDK documentation使用Java脚本注销:

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

FB.logout将使用户退出您的网站和Facebook。

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


0
投票

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

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

作为参考,对于其他任何人,似乎都没有最小长度-当前可以使用255,仍然可以更安全地使用400,但是oauth规范允许任何长度,因此需要一个smalltext字段来确保完全安全。


0
投票

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

  1. 转到Facebook应用程序控制台
  2. 转到设置->基本。在网站网址中输入我的新网址

并且注销URL再次起作用!


0
投票

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

设置->基本->应用程序域

但是这些域有规则...

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.