Пригласите друзей на мероприятие facebook 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)); 

Как говорит 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)) 

Это даст вам список друзей, не приглашенных на это мероприятие.

Не забудьте изменить идентификатор события

Попробуйте на Graph Explorer

ура

Два возможных подхода:

  • использовать пакетные запросы для размещения приглашения для каждого идентификатора пользователя индивидуально (индивидуально, но все же с одним запросом) – если одно приглашение не работает, это не имеет значения, все еще будут сделаны следующие сообщения о приглашениях.

  • «Cross-sect» ваш список идентификаторов ваших друзей с таблицей event_members FQL event_members вначале – получите список всех членов событий, которые соответствуют вашим идентификаторам друзей (используя WHERE eid='event_id' AND uid IN(…,…) ), а затем «вычесть «Результат (люди, которые уже были приглашены на мероприятие) из вашего исходного списка id друга. (В PHP вы можете использовать для этого array_diff .)