Facebook Open Graph - посмотрите, отмечался ли пользователь в определенном месте когда-то

есть ли способ проверить, регистрировался ли пользователь в определенном месте в любое время в прошлом?

с помощью php sdk я могу получить информацию о месте, например:

$place = $facebook->api('/placeIDhere');
var_dump($place['checkins'])

это дает мне счетчик проверок.

чтобы получить последние проверки пользователя, я мог бы сделать

$usercheckins = $facebook->api('/search?type=checkin');
var_dump($usercheckins[0]['place']['name']);

это дает мне последнюю отметку по имени

но есть ли способ проверить, зарегистрировался ли пользователь в специальном месте? /search?type=checkin дает мне очень небольшое количество недавних проверок, и если проверка старше ~ 2-3 недель, она даже не появляется.

спасибо за помощь.


person choise    schedule 27.05.2011    source источник


Ответы (2)


Выполните запрос FQL для checkin. Что-то вроде:

    SELECT coords,tagged_uids,author_uid,page_id,app_id,post_id,timestamp,message 
    FROM checkin 
    WHERE author_uid = me() and page_id = 'placeID'
person bkaid    schedule 27.05.2011
comment
есть ли способ сделать это с новой версией SDK? пробовал что-то подобное без ответа: $facebook->api('fql.query?query=xyz'); - person choise; 27.05.2011
comment
Убедитесь, что выполняемый вами запрос действительно вернет результат, протестировав тот же запрос на developers.facebook.com/docs/reference/rest/fql.query. Кроме того, сначала попробуйте выполнить более простой запрос. - person bkaid; 27.05.2011
comment
хорошо, не могу заставить это работать с php-sdk. Я использовал file_get_contents сейчас с access_token из sdk. похоже работает, спасибо !. Я благодарен за каждый намек, чтобы заставить это работать напрямую с SDK - person choise; 27.05.2011

Вот как заставить ответ bkaid работать с PHP SDK (см. На github).

Во-первых, вы должны проверить, вошел ли пользователь в систему или нет:

require "facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET,
));

$user = $facebook->getUser();

if ($user) {
    try {
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        $user = null;
    }
}

Вы предоставляете ссылку, чтобы заставить его войти в систему, если это не так. И если он есть, вы можете сделать вызов API:

if (!$user) {
    echo '<a href="' . $facebook->getLoginUrl() . '">Login with Facebook</a>';
} else {
    $fql = "SELECT post_id, message FROM checkin
            WHERE author_uid = me() AND page_id = THE_PAGE_ID";

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

Надеюсь, это поможет !

person Quentin    schedule 28.05.2011