1

我试图在这里获取我朋友的关系,但我提供了所有正确的权限,它仍然说我,未定义..它没有提取朋友的关系状态,也没有提取生日..这是我的代码:

function loadFriendsrel()
{
    //get array of friends
    FB.api('/me/friends?fields=name,first_name,gender,picture,relationship_status,birthday', function(response) {
        console.log(response);
        var divContainer=$('.facebook-friends');
                         var testdiv2 = document.getElementById("test2");

for(var i=0; i<response.data.length; i++){
    if(response.data[i].gender == 'female'){
         testdiv2.innerHTML += response.data[i].first_name + '<br/>' + response.data[i].relationship_status + '<br/>' + ' ' + '<img src="' + response.data[i].picture + '"/>'  + '<br /> <br/>';
    }
}
    });
}
4

1 回答 1

1

即使您获得了所有权限,您也不会获得relationship_status通过隐私设置阻止他们的用户。

隐私设置的优先级高于 facebook api。

所以,在你的循环中,一些朋友可能已经阻止了他们的relationship_status,所以它给出undefined并打破了你的循环。

把你的循环改成这样,

for(var i=0; i<response.data.length; i++){
    if(response.data[i].gender == 'female'){
    var relStatus = 'Relationship status not provided';

    // If relationship_status exists, only then take its value
    if('relationship_status' in response.data[i]){
        relStatus = response.data[i].relationship_status;  
    }
    testdiv2.innerHTML += response.data[i].first_name + '<br/>' + relStatus + '<br/>' + ' ' + '<img src="' + response.data[i].picture + '"/>'  + '<br /> <br/>';
 }   
}

您也可以将类似的逻辑应用于其他字段。

于 2012-05-24T12:52:55.993 回答