如何将数据从facebook应用程序传递到我的服务器(通过Ajax)?

如何将数据从facebook应用程序传递到我的服务器(通过Ajax)?,ajax,facebook,facebook-php-sdk,Ajax,Facebook,Facebook Php Sdk,(由于Facebook不推荐FBML和FBJ,我无法使用这些方法将数据传递到我的服务器) 我有一个IFRAME facebook应用程序,主要用于页面 当页面管理员在他们的页面中访问“我的应用程序”选项卡时,他们会看到一个设置页面,他们将在其中添加关于他们页面的信息。我还有一个提交按钮。一旦页面管理员提交有关其页面的信息,该信息将发送到我的服务器,并与页面ID一起存储。一旦完成此设置,当其他用户访问页面中的此应用程序选项卡时,他们将看到页面管理员发布的信息 我在服务器端使用Facebook的PH

(由于Facebook不推荐FBML和FBJ,我无法使用这些方法将数据传递到我的服务器)

我有一个IFRAME facebook应用程序,主要用于页面

当页面管理员在他们的页面中访问“我的应用程序”选项卡时,他们会看到一个设置页面,他们将在其中添加关于他们页面的信息。我还有一个提交按钮。一旦页面管理员提交有关其页面的信息,该信息将发送到我的服务器,并与页面ID一起存储。一旦完成此设置,当其他用户访问页面中的此应用程序选项卡时,他们将看到页面管理员发布的信息

我在服务器端使用Facebook的PHP SDK对签名请求进行解码并获取页面ID

下面是我的应用程序的index.php中的代码,用于将数据发送到我的服务器(与用户输入一起,还将传递页面ID,此处未显示)

函数sendData(){
$.post('ajax.php'{
数据:$(“#用户数据”).val()
},函数(数据){
警报(数据);
});
}
下面是简单的ajax.php脚本。到目前为止,这只是一个测试脚本

<?php
echo "<pre>" . print_r($_POST) . "</pre>";
?>

问题是只有用户数据被发送到服务器。这种方法存在安全问题。我想发送“签名请求”(facebook最初发送到我的index.php,我用它来验证请求)以及用户数据,这样我就可以从服务器端验证请求并更新正确页面的信息。否则,任何人都可以发布这样的请求,并更新任何页面的信息


您所需要做的就是在服务器端ajax脚本中使用Facebook PHP SDK,然后您可以检查请求是否由具有有效Facebook会话并授权您的应用程序的人发送

如果您担心使用您的应用程序的多个人会试图发送虚假请求来更改彼此的页面设置,那么您只需要存储一些有关哪些Facebook ID与他们管理的Facebook页面关联的信息


例如,在向服务器发送请求时,将页面ID与从页面ID派生的加密密钥一起发送(在显示自身时将此加密密钥保存在隐藏字段中)。在服务器中,解密此密钥以与页面ID匹配。通过这种方式,您可以确保页面管理员仅修改“他们”页面的信息。

您不需要发送
签名的\u请求
要验证表单输入,您需要发送令牌。请注意,如果您使用的是PHPSDK,那么在会话中,
signed_请求
应该在服务器上。
<?php
echo "<pre>" . print_r($_POST) . "</pre>";
?>