0

App req を 5 人に送信したいのですが、5 人のユーザー ID を取得できましたが、常に同じ 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(つまり、現在の応答の合計フレンド数) までのランダムな no を生成します。次に、そのランダムな no を使用して、指定されたリストからランダムな 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);

      });
    });

ここでは、ランダム no を毎回生成する代わりに、ランダム no を 1 回生成してからインクリメントします。ランダムな数が友達の総数を超える場合は、0 から始めます。

これにより、毎回ランダムな友達が常に与えられます:)

コードはテストされていません。エラーがある場合は申し訳ありません (しかし、コードは確かにあなたに考える方向性を与えます)

于 2012-05-24T21:27:00.950 に答える
0

これで、結果から常に 0、1、2、3、および 4 の友人が取得されます。結果が長い場合、それらのフレンド ID を取得することはできません。0 と長さ - 1 (両端を含む) の間の 5 つのランダムな整数を計算し、代わりにそれらを取得する必要があります (たとえばresult[3]、、result[84]など)。次に、それらの友達に招待状を送信する必要があります。

0との間の乱数を計算するresult.length - 1には、この StackOverflow の質問を参照してください:特定の範囲で JavaScript でランダムな整数を生成しますか? .

私はFB.ui関数にあまり詳しくありませんが、期待どおりに数値を指定しているかどうかを確認する必要があります。今のようにコンマで区切られますか? それとも、アプリのリクエストごとに 1 回、5 回呼び出す必要がありますか? それはあなたが調べるべきものです。後者の場合は、user_ids を繰り返し処理し、FB.ui各ユーザー ID で呼び出す必要があります。

于 2012-05-24T20:29:45.180 に答える