我们目前正在开发基于iframe的Facebook画布应用程序。画布部分工作正常,并没有真正触及Facebook API,因为我们在访问社交图方面并不需要用户的任何权限;我们使用的数据完全来自Facebook之外。
我们想要做的是允许用户将我们应用的FBML版本作为标签添加到他们的个人资料中。但是,目前尚不清楚我们应该如何使用当前的Facebook API启用该功能。
画布页面和回调设置已设置并正常工作,我们目前在“应用程序设置”中设置了选项卡名称和URL(直接点击选项卡URL将加载我们的最小测试页面),但没有明显的为用户提供将此标签添加到其个人资料中的方法。
我们最初的想法是,我们需要在http://wiki.developers.facebook.com/index.php/Fb:add-profile-tab
中提到的xfbml中添加我们自己的“添加配置文件选项卡”按钮但即使我们将iframe减少为准系统
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<script src="http://static.ak.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript"></script>
<fb:add-profile-tab></fb:add-profile-tab>
<script type="text/javascript">
FB.init("<our secret key>", "xd_receiver.htm");
</script>
</body>
</html>
xfbml元素无法呈现。 Safari和Chrome都在控制台中列出了以下错误:“不安全的JavaScript尝试使用URL [我们的Facebook上的应用程序网址]访问框架,其中包含URL [URL我们的iframe从中加载]。域,协议和端口必须匹配。”< / p>
我们确实在应用程序设置页面的“连接”选项卡中指向了我们的应用程序的连接URL。 xd_receiver.htm文件与iframe页面位于同一目录中,其内容为
<!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.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script>
</body>
</html>
似乎是所有相关文档推荐的内容。浏览器肯定会通过相关的调试窗格(网络检查员,萤火虫等)加载它。
所以问题是,这是在我们的应用程序中添加“添加到配置文件选项卡”功能的正确方法吗?如果是这样,我们如何解决跨域错误?如果没有,我们应该做什么呢?当前的文档似乎主要关注图形和身份验证API,它们都没有真正提到配置文件选项卡。
答案 0 :(得分:2)
在“应用程序”设置中,确保已设置:
Tab请求将转到{Canvas Callback URL} / {Tab URL}。那么这样的事情应该有效:http://apps.facebook.com/fbrelll/xfbml/fb:add-profile-tab
那是使用更新的JS SDK。我无法发布更多链接,但开发人员站点和github存储库提供了有关SDK的有用信息。
答案 1 :(得分:0)
事实证明,如果用户没有首先允许应用通过类似<fb:add-profile-tab>
<fb:login-button>
就无法呈现