0

我正在开发一个在粉丝页面标签中运行的摄影比赛 fb 应用程序。用户应该能够分享照片,以便其他人为他们投票。假设特定照片的图片链接iframehttp://example.com/image.php?id=1,按分享将通过 分享此链接iframe。这导致主机应用程序本身。我需要的是与 http://example.com/image.php?id=1在它的Iframe. 这有可能吗?感谢帮助。

4

2 回答 2

2

因此,要给出@Lix 的答案的“替代方案”,它专注于画布应用程序,这里是页面选项卡应用程序的模拟方式:

出于某种原因,Facebook 决定对页面选项卡应用程序做不同的事情 - 与画布应用程序不同,您不能通过将任何 GET 参数附加到应用程序的 facebook.com 地址来将它们传递给您的应用程序,但您必须使用app_data参数。

您在表单中调用/链接到您的应用程序https://www.facebook.com/YourPage?v=app_1234567890&app_data=foo- 无论您为参数设置什么值app_data,您都会在signed_requestFacebook 在初始(!)加载到 iframe 时发布到您的应用程序的参数中找到。

因此,您解析signed_request(或让 PHP SDK 为您解析),然后您app_data在其中找到值。如果你想传递多个单一的值,你也可以把 JSON 编码的数据放在那里——然后你必须在从签名请求中读取 app_data 值后再次解码。

文档只是简短地提到了app_data参数,但原理本身很简单。


现在,当谈到分享 这些链接时,我发现当你使用上述形式的地址时,Facebook 倾向于从 URL 中删除参数,并将整个链接视为一个指向你 Facebook 页面的链接——它显示了页面的图片和描述,甚至不传递您的页面选项卡应用程序,更不用说 app_data 参数了。

我发现解决此问题的最可靠方法不是直接链接到 Facebook 上的页面选项卡,而是链接到您自己的应用程序的 URL。当爬虫访问它时,您传递相关的OG信息。当它是真正的用户访问时,您将他们重定向到您的页面选项卡应用程序,通过上述app_data参数传递您需要的数据。重定向可以在服务器端(有关如何通过其 User-Agent 标头检测刮板服务器端的信息)或通过 JavaScript(刮板不会“说话”)在客户端完成。

于 2013-10-07T10:14:56.237 回答
1

是的。您所要做的就是能够从您的应用程序画布 URL 中提取信息。如果您的画布 URL 是这样的:

https://apps.facebook.com/ImadBakir

然后您可以在其中放置更多信息,如下所示:

https://apps.facebook.com/ImadBakir?photo_id=123

用户将共享该链接,现在在您的应用程序中,您可以解析该photo_id参数并进行所需的 HTML 更改,以便在页面和应用程序加载时在 iframe 中显示正确的图像。

关于解析 URL 参数,假设您将使用 JavaScript 进行解析,您可以在这篇文章中了解更多信息:
如何在 JavaScript 中获取查询字符串值?

于 2013-10-07T07:31:35.550 回答