Facebook App邀请请求

时间:2012-05-24 20:25:51

标签: facebook facebook-graph-api facebook-fql json facebook-app-requests

我想将App req发送给5个人,我已经设法获得了5个人的UserID,但它总是那些5个人,是不是有办法随机化我从Facebook获得的USERID's

<script>
var profilePicsDiv = document.getElementById('profile_pics');

FB.getLoginStatus(function(response) {


  FB.api({ method: 'friends.get' }, function(result) {
    Log.info('friends.get response', result);
   var user_ids="" ;
    var numFriends = result ? Math.min(5, result.length) : 0;
    if (numFriends > 0) {
      for (var i=0; i<numFriends; i++) {
        user_ids+= (

                          ',' + result[i] 

        );
      }
    }
    profilePicsDiv.innerHTML = user_ids;
alert(user_ids);

  });
});


 function sendRequestToRecipients() {
        var user_ids = document.getElementsByName("user_ids")[0].value;
        FB.ui({method: 'apprequests',
          message: 'My Great Request',
          to: user_ids,                        ///  How to Fill the ID's HERE ?
        }, requestCallback);
      }


</script>

2 个答案:

答案 0 :(得分:1)

我没有测试过,但这应该可行,

FB.getLoginStatus(function(response) {
 FB.api({ method: 'friends.get' }, function(result) {
   Log.info('friends.get response', result);
   var user_ids="" ;
   var totalFriends = result.length;
   var numFriends = result ? Math.min(5, result.length) : 0;
   if (numFriends > 0) {
      for (var i=0; i<numFriends; i++) {
        var randNo = Math.floor(Math.random() * totalFriends)
        user_ids+= (',' + result[randNo]);
      }
    }
    profilePicsDiv.innerHTML = user_ids;
alert(user_ids);

  });
});

这里,在循环中我生成一个从0到result.length的随机数(即当前响应中的总朋友)然后我使用随机的no从给定列表中获取随机id。

编辑(在OP询问非重复的randoms后),

根据您的要求,这应该有用......

   FB.getLoginStatus(function(response) {
     FB.api({ method: 'friends.get' }, function(result) {
       Log.info('friends.get response', result);
       var user_ids="" ;
       var totalFriends = result.length;
       var randNo = Math.floor(Math.random() * totalFriends);
       var numFriends = result ? Math.min(5,totalFriends) : 0;
       if (numFriends > 0) {
          for (var i=0; i<numFriends; i++) { 
            user_ids+= (',' + result[randNo]);
            randNo ++;
            if(randNo >= totalFriends){
                randNo = 0;
            } 
          }
        }
        profilePicsDiv.innerHTML = user_ids;
    alert(user_ids);

      });
    });

这里,我不是每次都生成随机数,而是生成一次随机,然后递增它。如果随机数不超过朋友的总数,那么我从0开始。

每次都会给随机的朋友:)

代码未经过测试,如果有错误我会道歉(但代码肯定会给你一个思考的方向)

答案 1 :(得分:0)

您现在总是从结果中收集朋友0,1,2,3和4。如果结果更长,那么你永远不会得到那些朋友ID。您应该计算0和长度之间的5个随机整数 - 1(包括)并获取它们(例如,result[3]result[84]等等。然后,您应该向这些朋友发送邀请。

要计算0result.length - 1之间的随机数,请参阅此StackOverflow问题:Generating random whole numbers in JavaScript in a specific range?

我对FB.ui函数并不熟悉,但您应该检查是否按照预期的方式给出数字。它是否希望它们像现在一样以逗号分隔?或者您是否需要拨打五次电话,每次应用请求一次?那是你应该抬头的东西。如果是后者,则必须迭代user_ids并使用每个用户ID调用FB.ui