邀请朋友参加活动facebook api

时间:2012-10-17 09:25:07

标签: php facebook facebook-graph-api

在邀请用户参加活动时,我的脚本非常慢,因为它必须检查用户是否已被邀请参加活动,否则会出现facebook ouath错误。

我可以加快速度吗?

foreach ( $_POST['friends'] as $ids ) {
    if ( $i < 199 ) {
        $iZ = $facebook->api("/".$event_id."/invited/".$ids, "GET");
            if ( $iZ['data'][0]['rsvp_status']):
                    $status = $iZ['data'][0]['rsvp_status'];
            else:
                    $status="";
            endif;

    if ( ($status != 'declined' && $status != 'attending' && $status != "unsure" && $status !=     "not_replied") || empty($status)) {
            $id.=$ids . ",";
            $i=$i+1;
    }
 }
}

$id = substr_replace($id ,"",-1);


echo $facebook->api("/".$event_id . "/invited",'POST', array("users" => $id));

2 个答案:

答案 0 :(得分:1)

像Cbroe所说,使用FQL,这里是代码:

SELECT uid,name FROM user WHERE uid IN 
(SELECT uid1 FROM friend WHERE uid2=me()) AND NOT 
(uid IN (SELECT uid FROM event_member where eid = 306212359507086))

这将为您提供未邀请参加该活动的朋友列表。

别忘了更改活动ID

Try it on Graph Explorer

干杯

答案 1 :(得分:0)

两种可能的方法:

  • 使用batch requests单独发布每个用户ID的邀请(单独,但仍然只有一个请求) - 如果单个邀请失败,这无关紧要,以下邀请帖仍将被制作

  • 首先使用FQL event_members table“交叉”选择您的朋友ID列表 - 获取与您的朋友ID匹配的所有活动成员列表(使用WHERE eid='event_id' AND uid IN(…,…)),然后“减去”您原来的朋友ID列表中的结果(已被邀请参加活动的人)。 (在PHP中,您可以使用array_diff。)