【发布时间】:2011-08-07 03:08:39
【问题描述】:
(由于 Facebook 已弃用 FBML 和 FBJS,我无法使用这些方法将数据传递到我的服务器)。
我有一个 IFRAME facebook 应用程序,主要是为页面使用而构建的。
当页面管理员在他们的页面中访问我的应用程序选项卡时,他们会看到一个设置页面,他们将在其中添加有关其页面的信息。我也有一个提交按钮。一旦页面管理员提交了关于他的页面的信息,它将被发送到我的服务器,并将与页面 ID 一起存储。此设置完成后,当其他用户访问页面中的此应用程序选项卡时,他们将看到页面管理员发布的信息。
我在服务器端使用 Facebook 的 PHP SDK 来解码签名请求并获取页面 ID。
以下是我的应用程序的index.php中的代码,用于向我的服务器发送数据 (随着用户输入,页面ID也会被传递,这里不显示) em>
function sendData() {
$.post('ajax.php', {
data : $("#userdata").val()
}, function(data) {
alert(data);
});
}
</script>
以下是简单的 ajax.php 脚本。目前这只是一个测试脚本。
<?php
echo "<pre>" . print_r($_POST) . "</pre>";
?>
问题是只有用户数据被发送到服务器。这种方法存在安全问题。我想发送 'signed_request' (facebook 最初发送到我的 index.php,我使用它来验证请求)连同用户数据,所以我可以验证来自服务器端的请求并更新正确页面的信息。否则,任何人都可以发布这样的请求并更新任何页面的信息。
【问题讨论】:
-
您不需要发送
signed_request来验证表单输入,您需要发送CSRF 令牌。请注意,如果您使用 php-sdk,signed_request在会话中无论如何都应该在服务器上。
标签: ajax facebook facebook-php-sdk