从iframe嵌入式Facebook应用程序中抓取数据

时间:2009-10-30 23:57:22

标签: facebook fbjs

使用iFrame,我网站上的某人可以访问他们的Facebook帐户,显示他们的相册列表,然后显示所选相册中的照片。

目前,当用户点击照片时,我会显示一个显示照片路径的对话框。

以上所有方法都非常有效。

我的下一步是将照片的路径信息传回我的网页,但我不知道该怎么做,因为我要传递数据的对象不在iFrame中,因此未知到Facebook。我尝试自上而下通过我的网站上包含iFrame的DOM引用它...

parent.client.document.getElementById( “FBPhoto”)的setValue(photoReference);

......但那没用。

在我的网站上将参数传递给PHP脚本是行不通的,因为我不想在我的网站上刷新页面(因为这会导致用户丢失数据)。

2 个答案:

答案 0 :(得分:0)

从你提供的内容看起来你的JS可能是错的。

做这样的事情可能会让你获得所需的价值:

var photoReference = window.frames["iframe-name"].document.getElementById("FBPhoto");

然后你需要把它分配给某事:

MyObject.setValue(photoReference);

注意:window.frames["iframe-name"].document.getElementById("FBPhoto")将返回名为#FBPhoto的DOM元素,因此将成为HTML的一大块。您的setValue()方法可能没有预料到这一点。

我建议您尝试在安装了FirefoxFirebug中运行脚本,这样您就可以将photoReference的值转储到控制台,以查看您要回来的内容。

答案 1 :(得分:0)

Doy ......我意识到,由于Facebook连接是在一个专用的iFrame中运行,重新引导该帧不会有问题,因为无论如何都没有理由让它保持打开状态。

对于任何有兴趣的人,这就是我所做的......

  1. PHP(在index.php中)显示专辑照片。

  2. PHP还使用href标签包围每个img框架。

  3. 链接指向PHP文件(在我的网站上),并包含一个参数,其中包含照片大版本的位置(因为我的应用程序正在显示缩略图)。类似于:“< a href =”pathToMySite / get-photo.php?photopath = facebook's path“>

  4. 当用户点击所需的照片时,其各自的链接会调用get-photo.php(在我的网站上)并传递照片的路径。

  5. get-photo.php然后将对我网站主JS文件的引用插入到文档头中,并将脚本插入到HTML文档的正文中。

  6. 该脚本调用JS fetch-photo函数,并传递从运行Facebook应用程序的嵌入式iFrame接收的路径参数。

  7. JS功能关闭了iFrame(因为那时我已经完成了Facebook)并从Facebook获取了照片。