Facebook请求2.0过滤器

时间:2011-03-16 18:11:11

标签: javascript facebook

所以我希望有人打电话帮助我解决这个问题因为我不太确定它的javascript,或者它的facebook。

这是我的情况。我升级到Facebook上的Requests 2.0,它不再让我能够将exclude_ids字段添加到用户将邀请他们的朋友加入App的表单中。此表单的目的不仅仅是邀请朋友,而是将朋友添加为应用程序中的某些内容。

简而言之,我有一个他们已添加的朋友列表,我想从他们的朋友的主列表中筛选出来,这样当他们想要使用该表单时,已添加的朋友就不会显示。

这是我的javascript来吸引朋友:

<script language="Javascript" type="text/javascript">    
var friends_filter = '<?=$myClass->getFiltered());?>';
</script>

会返回类似的内容:

999999999,999999999,999999999,999999999,999999999,999999999,999999999

这是他们未添加的用户的ID列表。

以下是表单的代码:

function addUser() {
    FB.ui(
    {
        method: 'apprequests',
        display: 'dialog',
        title: 'Add friends',
        message: 'Hey, I added you as a user/friend on such-and-such App', 
        data: 'added',
        filters: [{name: 'Non-Added', user_ids: [friends_filter]}],
    },
    function(response) {
        if(response && response.request_ids) {
            showLoading('Adding Relatives');
            var dataString = 'rids='+response.request_ids;
            $.ajax({
                type: "GET",
                url: server_url+"ajax/add_relative.php",
                data: dataString,
                success: function(data){
                    window.location.reload();
                }
            });
        }
    }
    );
}

如果你查看filters: [{name: 'Non-Added', user_ids: [friends_filter]}],行,那就是我要包含我只想在选择器中看到的IDS列表。弹出对话框,然后在friends_filter中列出这些ID,并显示一条错误消息,指出“无法解析为有效的用户ID”

这是我感到困惑的地方,如果我复制并粘贴friends_filter输出并将friends_filter替换为ID列表,即999999999,999999999,999999999,999999999,完全按照它出现,它的工作原理正确。

我知道这是一个详尽的帖子,我很抱歉,但我的智慧结束了。

我唯一能想到的是,我的javascript变量friends_filter可能需要转换为某种类型吗?

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我试过这段代码,这对我很有用

      FB.ui(
           {
             method: 'apprequests',
             filters: ['app_non_users'],
             message: 'msg here!',
            title: 'title for box'
           },
           function(response) {
               alert(response.request_ids);//this is return after send invite
           }
         );

如果您希望过滤结果与用户使用列表

filters: [{name: 'Invite friends', user_ids: <?php echo json_encode($users_array);?> }],

答案 1 :(得分:1)

经过多次反复试验,我找到了解决方案。

在:

<script language="Javascript" type="text/javascript">    
var friends_filter = '<?=$myClass->getFiltered());?>';
</script>

我改为

<script language="Javascript" type="text/javascript">    
var friends_filter = [<?=$myClass->getFiltered());?>];
</script>

用括号替换php echo周围的引号。

然后我改变了:

filters: [{name: 'Non-Added', user_ids: [friends_filter]}],

要:

filters: [{name: 'Non-Added', user_ids: friends_filter}],

答案 2 :(得分:0)

如果您想要排除添加该应用程序的(您的朋友),您只需使用:

filters: ['app_non_users']