【发布时间】:2014-10-05 07:21:37
【问题描述】:
我开发了一个 Facebook 应用程序(一个处于“开发模式”的游戏),由一个网络客户端(Facebook 画布)和一个移动客户端(Android 应用程序)使用。我还有一个 REST API(使用 Laravel 开发),它允许客户端和 Facebook API 之间的交换。该 API 可通过 Internet(不是 localhost)访问。
我的目标是检测用户何时卸载我的 Facebook 应用。
人们无需交互即可通过 Facebook.com 卸载应用程序 与应用程序本身。为了帮助应用检测何时发生这种情况,我们 允许他们提供将被 ping 的取消授权回调 URL 每当发生这种情况。
您可以通过应用仪表板启用取消授权回调。去吧 到您的应用程序,然后选择设置菜单,最后选择高级 标签。为取消授权回调 URL 提供了一个文本字段。
每当您的应用程序的用户取消授权时,该 URL 将被发送 包含签名请求的 HTTP POST。阅读我们的解析指南 签名请求以查看如何对其进行解码以找出用户 ID 触发了回调。
此 URL 的 Laravel 路由接受 GET 和 POST 请求。我知道 Facebook 回调使用 POST 请求,但接受 GET 方法允许我使用“Open Graph Object Debugger”工具来测试我的 URL 是否可以被 Facebook 服务器访问(并且它是成功的)。
目前我使用的是自签名 SSL 证书(AES 128)。 Apache 是我的网络服务器(它将所有 HTTP 请求重定向到 HTTPS)。
我知道how to decodesigned_request编码的POST参数(问题不在这里)。
问题:
当我删除应用程序(使用 Facebook 测试帐户)永远不会调用回调 URL。 Apache 日志(访问/错误)完全没有显示(而我可以通过 Open Graph Object Debugger 看到以前的访问)。
我已尝试使用已知 CA 提供的 SSL 证书通过另一个域更改回调 URL。同样的结果......这非常令人沮丧。
我不明白为什么。我错过了什么?
- 是我的网络服务器有问题吗?
- 是我的 SSL 证书有问题吗?
- 是我的 Facebook 应用配置有问题吗?
- 是因为我的 Facebook 应用处于开发模式吗?
- 这是 Facebook 错误?
【问题讨论】:
-
我在同一个桶里。 Apache 日志什么也没显示。如果我 cpy URL 并将其扔到浏览器中,它就可以工作。这几天一直在挠头。好郁闷
-
这个问题太老了,无法评论,但如果其他人遇到同样的问题,请尝试在本地环境中调试应用程序,看看 facebook 是否真的点击了 URL,我会使用 ngrok 来设置本地应用程序并调试 HTTP 请求,Here is a demonstration 使用 ngrok 在本地计算机上进行 HTTP 回调调试。 @gigi2
-
很多人都报告了这一点。我认为这是Facebook方面的错误?我希望你不是从本地服务器调用它:)
-
不是本地服务器。我也认为这是 Facebook 的错误。
-
截至 2018 年,ngrok 不使用 Facebook。尝试联系您的服务器将因 kErrorAddressPrivate 错误而终止。请改用serveo.net。
标签: android facebook laravel https facebook-canvas