2

我正在用 js 创建一个小部件,它将在许多网站上实现,
Facebook 要求我给他们“我的域”,这样他们就会知道我已经过验证。
问题是该小部件将被许多网站使用,我不会将所有这些域手动列出到 Facebook。
如何让我的应用程序仅使用 js 在那些不同的网站上运行?(对于小部件)

提前致谢。

4

2 回答 2

2

您的小部件可能需要在托管在您自己的域上的 iFrame 中加载其 FB 代码。然后,您需要使用一些跨域/跨 iframe JS hack 来让您的系统与使用它的页面进行通信。(这是一个很好的资源...... http://softwareas.com/cross-domain-communication-with-iframes)这绝对是一种痛苦,但这是我能想到的唯一方法试图做。在这一点上可能有一些好的 JS 库可以使这更容易,但我没有立即意识到。

另一种选择是创建一堆 Facebook 应用程序,每个应用程序都属于不同的域。这也会在维护方面带来一些痛苦,但它会简化您需要编写的 JS 代码。这种方法在健壮性方面有一些好处——如果使用您的小部件的网站之一出现流氓行为并因任何原因被禁止应用程序,您的其他客户端网站将不会受到影响。

Facebook 曾经提供过一个“克隆应用程序”的工具,但现在我找不到了。

于 2012-04-23T20:12:33.483 回答
0

我用ajax做类似的事情。我 ajax 到一个 php 页面,并使用 php sdk 处理所有请求。跨域就好了。

示例:应请求在 facebook 上更新的最新专辑,并在 facebook 上显示链接到专辑的封面照片。

<div id="pagealbums"></div>
<script>
function showAlbums(){
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttpA=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttpA=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttpA.onreadystatechange=function()
  {
  if (xmlhttpA.readyState==4 && xmlhttpA.status==200)
    {
    document.getElementById("pagealbums").innerHTML=xmlhttpA.responseText;
    }
  };
  xmlhttpA.open("GET","http://anotherfeed.com/feed.albums.php?pageid=facebook&type=list",true);
  xmlhttpA.send(); 
}
showAlbums();
</script>
于 2012-04-23T21:10:06.847 回答