Каков метод проверки пользовательского фаната страницы в GRAPH API?


В graph api, страницы.isFan метод не работает, каков метод проверки пользовательского вентилятора страницы в graph api?

Спасибо.

3 12

3 ответа:

Обновление 2:
Чтобы проверить, является ли текущий пользователь поклонником страницы Facebook при заходе на вашу вкладку, проверьте этот ответ .


Обновление:
Вы можете использовать соединение likes, чтобы проверить, является ли пользователь поклонником Страницы:

https://graph.facebook.com/me/likes/PAGE_ID
&access_token=ACCESS_TOKEN

Это вернет либо пустой массив данных:

Array
(
    [data] => Array
        (
        )

)

Или если вентилятор:

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [name] => Real Madrid C.F.
                    [category] => Professional sports team
                    [id] => 19034719952
                    [created_time] => 2011-05-03T20:53:26+0000
                )

        )

)

Итак, вот как мы проверяем с помощью PHP-SDK:

<?php
require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId' => 'APP_ID',
  'secret' => 'APP_SECRET',
));

$user = $facebook->getUser();

if ($user) {
  try {
    $likes = $facebook->api("/me/likes/PAGE_ID");
    if( !empty($likes['data']) )
        echo "I like!";
    else
        echo "not a fan!";
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'user_likes'
  ));
}

// rest of code here
?>

Аналогичный скрипт usingJS-SDK:

FB.api('/me/likes/PAGE_ID',function(response) {
    if( response.data ) {
        if( !isEmpty(response.data) )
            alert('You are a fan!');
        else
            alert('Not a fan!');
    } else {
        alert('ERROR!');
    }
});

// function to check for an empty object
function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

Код взят из моегоучебника .


Пока pages.isFan все еще работает на меня, вы можете использовать FQL page_fan таблица с новым PHP-SDK:

$result = $facebook->api(array(
    "method"    => "fql.query",
    "query"     => "SELECT uid FROM page_fan WHERE uid=$user_id AND page_id=$page_id"
));
if(!empty($result)) // array is not empty, so the user is a fan!
    echo "$user_id is a fan!";

Из документации:

Чтобы прочитать таблицу page_fan, вам нужно:

  • любой действительный access_token, если он является публичным (видимым для всех на Facebook).
  • user_likes разрешения при запросе текущего пользователя.
  • friends_likes разрешения при запросе a друг пользователя.

Вот еще один подход , основанный на переменной signed_request POST, которую Facebook отправляет на каждую страницу приложения tab (если у вас включен расширенный параметр "OAuth 2.0 for Canvas").

Самое приятное в этом то, что вам не нужно отправлять еще один fql.запрос.

Или вы можете использовать fbml, если вы хотите, например, показать некоторый контент, если они являются веером или сделали некоторые динамические вещи.

Пример:

<fb:fbml version="1.1">
    <fb:visible-to-connection>This part is visible for fans only!
        <fb:else>This part is visible for non-fans</fb:else>
    </fb:visible-to-connection>
</fb:fbml>