0

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

<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>
4

2 回答 2

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(即当前响应中的好友总数),然后我使用该随机数从给定列表中获取随机 id。

编辑:(在OP询问非重复随机数之后),

根据您的要求,这应该可以...

   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 开始。

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

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

于 2012-05-24T21:27:00.950 回答
0

您现在总是从结果中获取朋友 0、1、2、3 和 4。如果结果更长,那么您将永远无法获得这些朋友 ID。您应该计算 5 个介于 0 和 length - 1(含)之间的随机整数,然后取而代之(例如,result[3]result[84]等)。然后,您应该向这些朋友发送邀请。

要计算 和 之间的随机数0result.length - 1请参阅这个 StackOverflow 问题:在 JavaScript 中生成特定范围内的随机整数?.

我对这个FB.ui函数不太熟悉,但你应该检查你是否按照它期望的方式给出数字。它是否像现在一样希望它们以逗号分隔?或者你必须调用它五次,每次应用请求一次?那是你应该查的东西。如果是后者,那么您必须遍历 user_ids 并FB.ui使用每个用户 ID 进行调用。

于 2012-05-24T20:29:45.180 回答