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