Вопрос

Есть ли способ с графиком Facebook API для получения списка всех событий, созданных одним профилем? Наш клиент создает кучу событий, и мы хотим вытащить список их всех. Я сказал, что им просто нужно будет убедиться, что они поставили присутствовать на мероприятии, потому что тогда я могу легко вытащить список событий, которые присутствуют в Profive, но мне интересно, если есть другой путь. Может быть, запрос FQL? Хотя они могут потребовать запрос на первичный ключ. И какой бы этот запрос FQL выглядит, если это способ сделать это ??

Это было полезно?

Решение

Я в основном использовал FQL что @jhchen предоставил. Тем не менее, потребовалось около 6 часов, чтобы выяснить, как использовать это FQL. Отказ Поэтому я подумал, я бы предоставил вам рабочий скрипт. Это не идеально, поэтому, пожалуйста, обновите его, если вы найдете ошибку.

  1. Скачать Facebooks php sdk.
  2. Добавлять YOUR_APP_ID
  3. Добавлять YOUR_APP_SECRET
  4. Добавлять PAGE_ID
  5. Вносить изменения в FQL Заявление, как вы видите в форме. Документация FQL

Кроме того, вы должны быть хороши, чтобы пойти. Кроме того, я установил часовой пояс по умолчанию на America/Los_Angeles. Отказ Это, вероятно, вызовет проблемы для некоторых из вас, если кто-то имеет лучший способ справиться с часовыми поясами, пожалуйста, дайте мне знать.

PHP код:

<?php
require_once("php/facebook.php");

date_default_timezone_set('America/Los_Angeles');

function display_events()
{
    $app_id = 'YOUR_APP_ID';
    $secret = 'YOUR_APP_SECRET';
    $page_id = 'PAGE_ID';

    $config = array();
    $config['appId'] = $app_id;
    $config['secret'] = $secret;
    $config['fileUpload'] = false; // optional

    $facebook = new Facebook($config);

    $fql = 'SELECT 
                eid, 
                name, 
                pic_square, 
                creator,
                start_time,
                end_time
            FROM event 
            WHERE eid IN 
                (SELECT eid 
                    FROM event_member 
                    WHERE uid='.$page_id.'
                ) 
            AND end_time >= ' . mktime() . '
            ORDER BY start_time ASC
    ';

    $ret_obj = $facebook->api(array(
        'method' => 'fql.query',
        'query' => $fql,
    ));

    $html = '';                            
    foreach($ret_obj as $key)
    {
        $facebook_url = 'https://www.facebook.com/event.php?eid=' . $key['eid'];

        $start_time = date('M j, Y \a\t g:i A', $key['start_time']);
        $end_time = date('M j, Y \a\t g:i A', $key['end_time']);

        $html .= '
            <div class="event">
                <a href="'.$facebook_url.'">
                    <img src="'.$key['pic_square'].'" />
                </a>
                <span>
                    <a href="'.$facebook_url.'">
                        <h2>'.$key['name'].'</h2>
                    </a>
                    <p class="time">'.$start_time.'</p>
                    <p class="time">'.$end_time.'</p>
                </span>
            </div>
        ';
    }

    echo $html;
}

Другие советы

Вы можете использовать FQL. Просто используя создателя, как ваша пункт откуда не работает, потому что создатель не индексируется. Однако обходной путь состоит в том, чтобы включить предложение по индексируемым, где в дополнение к созданию. Бывший:

Выберите EID, имя, рис, создатель из события, где EID в (выберите EID из Event_Member, где UID = 12345) и Creator = 12345

Это один из тех, которые «нет хорошего способа добраться туда отсюда». Вы не можете использовать FQL, потому что столбец Creator не проиндексирован. Лучшее решение, которое я могу подумать в данный момент, будет использовать графический API для запроса соединения событий создателя и отфильтровывая любые события, которые они не создатель. Это не будет ужасно эффективным, поскольку вы будете загружать информацию обо всех событиях пользователя, даже те, которые они не создавали. Итак, я бы экспериментировал с нарушением его на два запроса:

graph.facebook.com/[user_id]/events?fields=id,owner&limit=1000

А затем, как только вы отфильтровали все события, которые они не создавали:

graph.facebook.com/?ids=[event_ids for the user's events]

Ответ Zechdc идеален, но мне просто нужно было добавить STRTOTIME для работы start_time.

$start_time = date('M j, Y \a\t g:i A', strtotime($key['start_time']));
$end_time = date('M j, Y \a\t g:i A', strtotime($key['end_time']));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top