Search code examples
facebookfacebook-graph-apifacebook-fqljsonfacebook-app-requests

Facebook App invitation request


I want to send the App req to 5 people , i have managed to get the UserID's of 5 people but its always those same 5 people , isnt there a way to randomise the USERID's which i get from 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>

Solution

  • I havent tested, but this should work,

    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);
    
      });
    });
    

    Here, in loop I generate a random no from 0 to result.length (i.e. total friends in current response) And then I use that random no to fetch random id from the given list.

    Edit: (after OP asked about non-repeating randoms),

    Based on your requirement, this should work...

       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);
    
          });
        });
    

    Here, instead of generating random no each time, I generate a random no once and then increment it. If random no exceeds the total no of friends, then I start from 0.

    This will always give random friends each time :)

    Code is not tested, I apologize if has errors ( But code surely gives you a direction to think)