当使用facebook-logo =“true”选项时,Facebook Connect API不会填充用户数据

时间:2009-10-15 17:42:25

标签: javascript html facebook xfbml

我正在使用Facebook Connect应用。我已启动并运行“连接”按钮,用户可以通过Facebook成功进行身份验证。但是,我无法通过XFBML显示他们的个人资料图片和名称。这就是我正在做的事情:

<script type="text/javascript">
function fb_login_handler() { 
    var userbox = document.getElementById( "fb_userbox" );

    userbox.innerHTML = 
        "<span>"
        + "<fb:profile-pic uid=loggedinuser facebook-logo='true'></fb:profile-pic>"
        + "Welcome, <fb:name uid=loggedinuser useyou='false'></fb:name>"
        + "</span>";

    FB.XFBML.Host.parseDomTree();
}
</script>

...

<div id="fb_userbox">
    <fb:login-button onlogin="fb_login_handler();" autologoutlink="1" length="long"></fb:login-button>
</div>

...

<!-- Facebook Connect initialization -->
<script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US" type="text/javascript">
</script>

<script type="text/javascript">
    FB.init("[MY_API_KEY]", "/xd_receiver.htm",
            { "ifUserConnected" : fb_login_handler } );
</script>

我可以使用“连接”按钮成功登录,然后运行Javascript回调,但我最终得到了这个:

http://www.friedo.com/fbuserbox.png

所以图片和名字都没有填充。即使我将FB配置文件ID硬编码为loggedinuser,也会发生同样的事情。

更新:如果我关闭facebook-logo标记中的fb:profile-pic属性,似乎(在随机乱搞之后)我可以让它工作。将其设置为false(或将其删除)会导致用户框正确呈现。但我也需要Facebook徽标才能工作。 :(

2 个答案:

答案 0 :(得分:1)

您在this test console下可以正常使用的标记。您确定没有收到任何JavaScript错误吗?

此外,您可以使用相对较旧的用户的uid进行测试。似乎有a bug with displaying pictures for new users。我的uid似乎没有这个问题,如果你想用我的测试:685184151

答案 1 :(得分:0)

我在我的服务器上尝试了这个代码,它运行得很好,我用fb徽标得到我的名字和图片,我在IE8,Chrome 4.0,Safari 3.21和Firefox 3.5中尝试过,都取得了成功。

您必须添加这些标记,以便FBML标记可以在IE,Safari和其他浏览器的某些版本中运行。

<!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" xmlns:fb="http://www.facebook.com/2008/fbml">

我想粘贴整个脚本以便您可以看到它,但我是这个网站的新手,所以我不知道如何(代码标签不起作用)。我没有对你的代码做任何改动,只是添加了我上面提到的标签以及body和head标签。