0

设置:

有一个 Facebook 选项卡应用程序(PHP 和 Javascript),它安装在两个不同的 Facebook 页面上。应用程序的每个实例都有一些彼此不同的配置值。

问题:

当应用程序通过 Facebook 加载时,我可以根据 Facebook 的“签名请求”确定要加载的内容。但是,例如,当应用程序本身进行 AJAX 调用以更新某些数据时,有没有办法确定调用来自何处,而无需随请求发送某种标识符?

想法:

我尝试了 PHP 会话,虽然我对会话不是很熟悉,但如果两个实例同时打开,应用程序似乎会感到困惑。我错过了什么吗?

当然,我可以在每个 AJAX 请求中发送某种 ID,以指定调用的来源,如上所述,但这是我想避免的。

有什么建议么?

4

1 回答 1

3

会话是用户级别的,因此它不是解决问题的最佳方式。

相反,解决问题的最简单方法是解码signed_request并找到page_id(的一部分signed_request)。然后,当您在页面上进行 ajax 调用时,在调用中传递 ID(作为GETPOST数据),以便您的服务器知道要为该页面加载哪些数据。

您可以执行以下操作:

switch ( $_GET['page_id'] ) {
  case '1234':
    // load settings for page 1234
  break;
  case '5678':
    // load settings for page 5678
  break;
}

或者,您可以使用数据库更轻松地管理它并使其具有可扩展性。

于 2012-07-23T11:41:19.780 回答