2015-02-12 3 views
1

Я хочу получить все события фида и собрать сведения о мероприятии. Как это, я запрашивая корм:PHP Facebook API: получить информацию о событиях за один раз

// instantiate 
    $facebook = new Facebook($config); 

    $pagefeed = $facebook->api("/" . $pageid . "/feed"); 

    foreach($pagefeed['data'] as $post) { 

      // check if post type is a link 
      if ($post['type'] == 'event') { 
       // call API to retrieve the event details 
      } 
    } 

Как вы можете видеть, мне нужно отправить один запрос для каждого события. Могу ли я избежать этого, например, используя команду «expand» в oData?

Cheers

ответ

3

Хорошо, я понял это сам. Подход, который я использовал до сих пор, устарел. При использовании версии 4x из API работает следующим образом:

// init app with app id and secret 
    FacebookSession::setDefaultApplication(FB_APP_ID, FB_SECRET); 

    // If you're making app-level requests: 
    $session = FacebookSession::newAppSession(); 

    // To validate the session: 
    try { 
     $session->validate(); 
    } catch (FacebookRequestException $ex) { 
     // Session not valid, Graph API returned an exception with the reason. 
    } catch (\Exception $ex) { 
     // Graph API returned info, but it may mismatch the current app or have expired. 
    } 

    try { 
     $request = new FacebookRequest(
      $session, 
      'GET', 
      // get all events of a Page, ?fields= let you choose which fields you want the Graph to return 
      '/' . FB_ID . '/events?fields=id,end_time,cover,description,is_date_only,location,name,start_time&since=' 
       . strtotime('-1 year') . '&until=' . strtotime('+1 year') 
       . '&limit=10&locale=de_DE&date_format=d. M, y H:m' 
     ); 
     $response = $request->execute(); 
     $graphObject = $response->getGraphObject()->asArray(); 
     // handle the result -> returns an indexed array without key 
     $objectData = $graphObject['data']; 

Довольно просто, если вы знаете, как это сделать ... ;-)

Надеется, что это помогает кто-то еще struggeling тоже.

Смежные вопросы