Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 链接到Facebook应用程序框架的最佳方式是什么?_Php_Javascript_Facebook_Redirect - Fatal编程技术网

Php 链接到Facebook应用程序框架的最佳方式是什么?

Php 链接到Facebook应用程序框架的最佳方式是什么?,php,javascript,facebook,redirect,Php,Javascript,Facebook,Redirect,我有一个纯iframe的PHP Facebook应用程序。通过保持纯粹,我想说的是,直接在iframe URL中接近它是没有意义的。如果有人意外地接近(例如,通过在新选项卡中打开应用程序内部的链接)iframe之外的应用程序URL,我的应用程序可以通过JavaScript识别它并重定向到iframe中的版本 然而,我期望的行为是将用户发送到他想要接近的相同URL,仅在Facebook平台iframe内。例如: 用户转到: 我的应用程序重定向到:,在iframe中为初始页面 我想重定向的地方:,

我有一个纯iframe的PHP Facebook应用程序。通过保持纯粹,我想说的是,直接在iframe URL中接近它是没有意义的。如果有人意外地接近(例如,通过在新选项卡中打开应用程序内部的链接)iframe之外的应用程序URL,我的应用程序可以通过JavaScript识别它并重定向到iframe中的版本

然而,我期望的行为是将用户发送到他想要接近的相同URL,仅在Facebook平台iframe内。例如:

  • 用户转到:
  • 我的应用程序重定向到:,在iframe中为初始页面
  • 我想重定向的地方:,在iframe中是请求页面

你认为最好的解决方案是什么?我考虑过会议,他们有什么缺点吗?我可以保存原始位置并开始重定向到iframe,然后找出位置并重定向到iframe内的页面。如何确保被重定向的用户不会中断该过程,也不会因为已保存但未解决的重定向而导致任何不可预测的重定向?我的应用程序中有多个选项卡的用户如何?选项卡可以从另一个选项卡窃取重定向…

例如,将用户重定向到应用程序中并分析查询(或使用httpd重写规则)。

例如,将用户重定向到应用程序中并分析查询(或使用httpd重写规则)。

下面是我对
页面选项卡
应用程序的调查结果。Facebook上的
应用程序可能根本不是这样

通常情况下,Facebook不会将查询字符串参数传递到iframe的URL,因此您不能使用
Facebook.com/../my_app?where=help&page=2
方式

但是,它将在已签名的请求中传递
app_data
参数(这是规则AFAIK的唯一例外)。但这只剩下一个参数可供使用。您可以通过使其成为一个url编码的JSON对象(实际上包含许多变量)来解决这个问题。例如:

facebook.com/../my_app?app_数据=%7b其中%3a+%22帮助%22%2c+页面%3a+2%7d

在服务器端,通过
json\u解码($signedRequest['app\u data'])
和接收

array(
    'where' => 'page',
    'page' => 2
)

从现在起,由您执行重定向。你不必使用会话,除非你的用户没有登录到facebook和/或你的应用程序。那你就得把事情弄复杂一点。我的解决方案是在未登录的情况下使用会话:

以下是我对
页面选项卡
应用程序的调查结果。Facebook上的
应用程序可能根本不是这样

通常情况下,Facebook不会将查询字符串参数传递到iframe的URL,因此您不能使用
Facebook.com/../my_app?where=help&page=2
方式

但是,它将在已签名的请求中传递
app_data
参数(这是规则AFAIK的唯一例外)。但这只剩下一个参数可供使用。您可以通过使其成为一个url编码的JSON对象(实际上包含许多变量)来解决这个问题。例如:

facebook.com/../my_app?app_数据=%7b其中%3a+%22帮助%22%2c+页面%3a+2%7d

在服务器端,通过
json\u解码($signedRequest['app\u data'])
和接收

array(
    'where' => 'page',
    'page' => 2
)

从现在起,由您执行重定向。你不必使用会话,除非你的用户没有登录到facebook和/或你的应用程序。那你就得把事情弄复杂一点。我的解决方案是在未登录的情况下使用会话:

AFAIK这些参数不会包含在Facebook为应用程序创建的iframe的URL中。这条规则的唯一例外是
app\u data
参数-再说一遍,好吧。你说得不对。我刚检查过,它对我有效。我已将以下内容添加到我的测试页面警报(document.location.search);这很有趣。这是从iframe还是父页面获取查询字符串?此外,您是否能够获取服务器端参数?此外,参数存在于referrer标头警报(document.referer)中;是的,服务器端也存在参数。我找不到相关文档,所以Bubaba可能会说为什么他的意见参数没有被传递。AFAIK这些参数不会包含在Facebook为应用程序创建的iframe的URL中。这条规则的唯一例外是
app\u data
参数-再说一遍,好吧。你说得不对。我刚检查过,它对我有效。我已将以下内容添加到我的测试页面警报(document.location.search);这很有趣。这是从iframe还是父页面获取查询字符串?此外,您是否能够获取服务器端参数?此外,参数存在于referrer标头警报(document.referer)中;是的,服务器端也存在参数。我找不到相关的文档,所以Bubaba可能会说为什么他的意见参数没有通过。