我正在使用Facebook js来允许用户登录。 js上的登录部分工作得很好但我想抓住Facebook发送的signed_request(使用服务器端语言,如php或java)。阅读他们关于如何捕获signed_requests的文档(https://developers.facebook.com/docs/facebook-login/using-login-with-games/)并不是很有用。他们声明“已签名的请求是通过HTTP POST发送到设置为Canvas URL的URL”,所以我转到了我的确切URL(mywebsitenamehere.com/login.php,我将其称为我的Canvas URL并添加了代码来捕获POST ['signed_request'](我假设这是它,因为我无法在Facebook上找到告诉你变量名称的任何地方。)问题是没有任何反应,我在login.php页面中添加了一些代码来简单如果POST变量是为测试目的设置的,则重定向到另一个网站,没有任何反应。我真的很感激我应该做的具体例子。搜索互联网我能找到一些例子,但是那些人是使用php进行登录,但我使用的是JS。
答案 0 :(得分:0)
在您发布的链接文本中:
“当您在Facebook.com上运行游戏时,您可以访问已签名的请求 参数“
因此,signed_request仅在Canvas应用中通过Facebook上的Canvas URL提供: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>