将应用程序请求对话框发送到特定的id数组

时间:2012-05-28 09:02:00

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我;我试图在Facebook上向我的朋友发送请求对话框,但是对于一些选定的,我已经创建了一个数组,我需要只发送邀请给该数组上的id,我已经建立了这个代码,但它是不工作。

看起来它会停止我的所有页面的性能

//function to load friends
function loadFriends()
{
    //get array of friends
    FB.api('/me/friends?fields=name,first_name,gender', function(response) {


        console.log(response);
        var divContainer=$('.facebook-friends');
                         var testdiv = document.getElementById("test");

for(var i=0; i<response.data.length; i++){
    if(response.data[i].gender == 'male'){
         testdiv.innerHTML += response.data[i].first_name + response.data[i].id + '<br />';
    }
}

var  arr = []; // Creates an empty array literal.
  for(var i=0; i<response.data.length; i++){
    arr.push(response.data[i].id);
  }
  newInvite(arr); // Call your function and pass the friends array

    });
}

function newInvite(arr){
     FB.ui({ method: 'apprequests',
  message: 'Penelope for WAS',
  filters: ['app_non_users'],
  to:arr.join(',')

});
    }

1 个答案:

答案 0 :(得分:1)

您应该使用逗号分隔列表作为to参数,而不是数组。

FB.ui({
  method: 'apprequests',
  message: 'Penelope for WAS',
  filters: ['app_non_users'],
  to:arr.join(',')
});

在处理JavaScript变量范围时,您的代码也有错误。

newInvite是一个缺少arr变量定义的函数(并且arr不在全局范围内,您应该将其传递给newInvite,以便它可供您使用功能内部。

function newInvite(arr){
  FB.ui({
    method: 'apprequests',
    message: 'Penelope for WAS',
    filters: ['app_non_users'],
    to:arr.join(',')
  });
)

当然,你应该将朋友ID数组传递给函数:

FB.api('/me/friends', {fields:'name,first_name,gender'}, function(response) {
  var  arr = []; // Creates an empty array literal.
  for(var i=0; i<response.data.length; i++){
    arr.push(response.data[i].id);
  }
  newInvite(arr); // Call your function and pass the friends array
});