我正在开发一款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
我认为我在我的脸书应用程序中配置错误,但不知道它是什么
答案 0 :(得分:0)
[06:02:12.503] GET http; // m.mochirestaurant.com/fb/%5Bobject%20Object%5D [HTTP / 1.1 404 Not Found 77ms]
而不是真正的值,你可以看到它在那里显示[object]
(括号URL编码) - 这是当你试图将对象带入字符串上下文时浏览器返回的内容。 (因为这不是以http:// ...开头的完整网址,您的浏览器会将其视为相对地址,并尝试从您的域请求它。)
因此,代码中此时friend.picture
显然不是字符串值,而是对象。
(到目前为止,调试和发现错误部分。)
这源于关于用户/图片连接的October 3, 2012 Breaking change,
/图片连接会在指定回调时返回字典
当访问对象的/ picture连接并指定回调属性时,我们将开始返回包含字段url,height,width和is_silhouette的字典。目前我们只是将图片网址作为字符串返回。
因此,您必须在代码中使用friend.picture.url
来获取包含用户图片网址的实际字符串属性。