我们如何让用户在他们的个人资料中添加您的应用程序?

时间:2010-07-10 03:00:00

标签: facebook tabs profile

我们目前正在开发基于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,它们都没有真正提到配置文件选项卡。

2 个答案:

答案 0 :(得分:2)

在“应用程序”设置中,确保已设置:

  • 画布&gt;
    • Canvas页面网址
    • Canvas回调网址
  • 个人资料&gt;
    • 标签名称
    • 标签网址

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>就无法呈现