2

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

我们用:

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

对于注销,我们将用户从我们的应用程序中注销(包括删除 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 错误,还是我使用了一个从未打算供应用程序使用的功能?我猜我可以使用 javascript API 来让它工作,只是想检查一下我是否应该对我目前的做法做一些小的改变。

编辑:

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

email,publish_actions
4

5 回答 5

1

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

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

于 2013-04-11T17:15:22.317 回答
0

来自 Facebook 的使用 Javascript 注销的SDK 文档:

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

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

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

于 2013-04-11T14:24:21.950 回答
0

原来我的 access_token 无效。我将它存储在 varchar(150) 字段中,但现在较新的令牌比这更长。

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

作为参考,对于其他人来说,它看起来没有最小长度 - 目前 255 可以工作,400 会更安全,但 oauth 规范允许任何长度,因此需要一个 smalltext 字段才能完全安全。

于 2013-04-15T11:44:43.390 回答
0

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

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

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

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

如果您想拥有 2 个不同的 URL,那么您可以同时使用“站点 URL”和“安全页面选项卡 URL”

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

设置 -> 基本 -> 页面选项卡 -> 安全页面选项卡 URL

于 2019-09-25T20:45:56.333 回答
0

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

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

并且注销网址再次起作用!

于 2017-03-14T03:20:24.987 回答