0

我正在使用 Facebook js 来允许用户登录。js 上的登录部分运行良好,但我想捕获 Facebook 发送的签名请求(使用服务器端语言,如 php 或 java)。阅读他们的文档(https://developers.facebook.com/docs/facebook-login/using-login-with-games/) 关于如何捕获 signed_requests 的信息不是很丰富。他们声明“签名的请求是通过 HTTP POST 发送到设置为您的 Canvas URL 的 URL”,所以我转到了我的确切 url(mywebsitenamehere.com/login.php,我将其声明为我的 Canvas URL 并添加了代码来捕获POST['signed_request'] (我假设就是这样,因为我在 Facebook 上找不到任何地方告诉你变量的名称)。问题是什么也没发生,我在 login.php 页面中添加了一些代码来简单如果为测试目的设置了 POST 变量,则重定向到另一个网站,但没有任何反应。我真的很感激我应该做的一个具体例子。在互联网上搜索我能够找到一些例子,但这是人使用 php 登录,但我使用的是 JS。

4

1 回答 1

0

它在您发布的链接的文本中:

“当您在 Facebook.com 上运行游戏时,您可以访问已签名的请求参数”

因此,signed_request 只能通过他们在 Facebook 上的 Canvas URL 在 Canvas 应用程序中使用:https ://apps.facebook.com/appnamespace

...或在页面应用程序中,当然。您正确地输入了自己的服务器 URL,但您还需要设置应用程序命名空间,并且您自己的服务器 URL 将加载到位于 apps.facebook.com/appnamespace 的 iframe 中。

话虽如此,您可以使用 PHP SDK 从中获取数据($facebook->getSignedRequest()),或链接中提供的函数(parse_signed_request)。

编辑:您不能直接在 JavaScript 中访问 signed_request,但您可以使用服务器语言对其进行回显。例如(未经测试,但你会明白的):

<script>
var signed_request = '<?php echo json_encode($signed_request); ?>';
</script>
于 2013-05-04T15:17:31.067 回答