你可以帮助我。我无法在Chrome 9.0 beta,Chrome 8.0或Firefox 3.6.13中删除此错误消息:
“不安全的JavaScript尝试使用URL”http://appapp.dyndns-office.com/“从具有URL”http://apps.facebook.com/myapp/“的框架访问框架。域名,协议和端口必须匹配。“
我在Samples文件夹中使用了FacebookSDK版本4.1.1 CSMvcFacebookApp。
我的Site.Master页面位于Views / Shared:
中
<script language="javascript" type="text/javascript">
$(document).ready(function () {
FB_RequireFeatures(['CanvasUtil'], function () {
FB.XdComm.Server.init("<%= ResolveUrl("~/xd_receiver.htm") %>");
FB.CanvasClient.startTimerToSizeToContent();
});
});
</script>
我的根目录中有xd_receiver.htm,并假设上面的javascript代码是我需要用facebook验证我的域名。 我的推定是正确的还是改变了? 我甚至尝试将FB代码移出JQuery就绪函数,如下所示:
<script language="javascript" type="text/javascript">
FB_RequireFeatures(['CanvasUtil'], function () {
FB.XdComm.Server.init("<%= ResolveUrl("~/xd_receiver.htm") %>");
FB.CanvasClient.startTimerToSizeToContent();
});
</script>
但这也不起作用...... 任何人都可以了解我做错了什么,或者我如何使用SDK / MVC IFrame解决方案让xd文件工作......
FB.CanvasClient.startTimerToSizeToContent()正在触发,因为我的应用程序中没有滚动条,因此证明FB_RequireFeatures函数正在工作。但至于FB.XdComm.Server.init是否正在做它的部分,我只是不确定我如何测试这个?
我的根目录中的xd_receiver.html文件的内容是:
<!--<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>cross domain receiver page</title>
</head>
<body>
<!--
As described in: http://wiki.developers.facebook.com/index.php/Cross-domain_communication_channel
-->
<script src="http://static.ak.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
</body>
</html>-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<body>
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
</body>
</html>
XdCommReceiver.js存在,因为我刚刚将粘贴的网址复制到浏览器中。我的路径是正确的还是有Facebook并更改网址等等??
据我所知,我主要担心的是,如果我现在没有解决这个跨领域的问题,Safari根本不会运行我的应用程序。
非常感谢任何帮助: - \
由于 罗布
&LT;&LT;附加评论&gt;&gt;
最新版本的FacebookSDK v 4.1.1中是否有内置机制使这个跨域的东西正常工作? SDK的开发人员是否考虑过这个问题?或者我刚刚提出了未来的功能......: - \
答案 0 :(得分:3)
以下是跨域脚本通道文件中需要的代码:
<html><body><script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script></body></html>
这是初始化FB Javascript SDK的代码。将它放在HTML文件的最末端,替换为适当的值和URL。
<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script><script type="text/javascript">FB.init({appId: '1234567890', status: true, cookie: true, xfbml: true,channelUrl: 'http://example.com/xss_channel.htm'});</script>
(可选)将其放在XSS通道文件所在的web.config中。这使得浏览器可以按照Facebook的建议无限期地缓存文件。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<location path="xss_channel.htm">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Expires" value="Tue, 01 Jan 2030 16:00:00 GMT" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>
最后,如果您正在使用XFBML,请将此命名空间定义放在<html>
中,以使XFBML在IE中工作:
xmlns:fb="http://www.facebook.com/2008/fbml"
答案 1 :(得分:0)
您正在使用旧的Facebook Connect Javascript。 Facebook C#SDK与旧的Javascript SDK不兼容。您应该使用新的Facebook Javascript SDK(如示例中所示)。 http://developers.facebook.com/docs/reference/javascript/