0

我正在开发一个 facebook 移动网络应用程序。有以下功能。

function getUserFriends() {
    FB.api('/me/friends&fields=name,picture', function(response) {
        console.log('Got friends: ', response);

        if (!response.error) {
            var markup = '';

            var friends = response.data;

            for (var i=0; i < friends.length && i < 25; i++) {
                var friend = friends[i];

                markup += '<img src="' + friend.picture + '"> ' + friend.name + '<br>' + friend.id + '<br>';
            }

            document.getElementById('user-friends').innerHTML = markup;
        }
    });
}

当它返回时,图片丢失了。控制台日志返回:

[06:02:12.503] GET http://m.mochirestaurant.com/fb/%5Bobject%20Object%5D [HTTP/1.1 404 Not Found 77ms]

虽然它应该返回如下内容:

http://profile.ak.fbcdn.net/hprofile-ak-ash2/276211_285403872_5043326_q.jpg

我想我在我的 Facebook 应用程序中错误配置了一些东西,但不知道它是什么

4

1 回答 1

0

[06:02:12.503] GET http;//m.mochirestaurant.com/fb/%5Bobject%20Object%5D [HTTP/1.1 404 Not Found 77ms]

您可以看到它不是一个真正的值,而是[object]在其中显示(使用括号 URL 编码)——这是当您尝试将对象带入字符串上下文时浏览器返回的内容。(并且因为这不是一个以 http://... 开头的完整 URL,您的浏览器会将其视为相对地址并尝试从您的域中请求它。)

所以很明显friend.picture,此时代码中的不是字符串值,而是一个对象。

(到目前为止,调试和发现错误部分。)

这源于2012 年 10 月 3 日关于用户/图片连接的重大更改,

/picture 连接将在指定回调时返回字典

当访问对象的 /picture 连接并指定回调属性时,我们将开始返回包含字段 url、height、width 和 is_silhouette 的字典。目前我们只是将图片 URL 作为字符串返回。

因此,您必须friend.picture.url在代码中使用来获取包含用户图片 URL 的实际字符串属性。

于 2012-08-07T12:08:21.980 回答