我正在用js创建一个小部件,它将在许多网站上实现,
Facebook要求我给他们"我的域名",这样他们就会知道我已经过验证。
问题是该小部件将从许多网站使用,我不会手动将所有这些域列出到Facebook。
如何使我的应用程序仅使用 js 从这些不同的网站工作?(对于小部件)
提前谢谢。
您的小部件可能需要在托管在您自己的域上的 iFrame 中加载其 FB 代码。 然后,您需要使用一些跨域/跨iframe JS黑客来让您的系统与使用它的页面进行通信。 (这里有一个很好的资源来做到这一点...http://softwareas.com/cross-domain-communication-with-iframes)这绝对是一种痛苦,但这是我能想到的做你想做的事情的唯一方法。 在这一点上,可能有一些很好的JS库可以简化此操作,但我并没有立即意识到任何库。
另一种选择是创建一堆Facebook应用程序,每个应用程序都属于不同的域。 这也会在维护方面带来一些痛苦,但它会简化你需要编写的 JS 代码。 这种方法在健壮性方面有一些好处 - 如果使用您的小部件的其中一个站点变得流氓并出于任何原因禁止应用程序,则其他客户端站点不会受到影响。
Facebook曾经提供"克隆应用程序"工具,但刚才我找不到它。
我使用 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>