Получение списка друзей Facebook с последним API - PullRequest
25 голосов
/ 01 октября 2010

Я использую самую последнюю версию Facebook SDK (которая позволяет подключаться к чему-то, называемому «Graph API», хотя я не уверен).Я адаптировал пример кода Facebook, чтобы я мог подключиться к Facebook, и это работает ... но я не могу получить список моих друзей.

$friends = $facebook->api('friends.get');

Это приводит к сообщению об ошибке: «Неустранимая ошибка:Uncaught OAuthException: (# 803) Некоторые из запрошенных вами псевдонимов не существуют: friends.get, брошенный в /mycode/facebook.php в строку 543 "

Не знаю, почему это так и что это значит.Может кто-нибудь сказать мне правильный синтаксис (для последней версии Facebook API), чтобы получить список друзей?(Я попытался "$ friends = $ facebook-> api-> friends_get ();" и получил другую ошибку "Неустранимая ошибка: вызов функции-члена friends_get () для необъекта в /mycode/example.php настрока 129 ".)

Я могу подтвердить, что ДО этого пункта в моем коде все было в порядке: я подключен к Facebook с допустимым сеансом, и я могу получить свою информацию и просто вывести ее на экран.то есть этот код прекрасно выполняется до неудачного вызова friends.get:

$session = $facebook->getSession();
if ($session) {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
}
print_r($me);

Ответы [ 10 ]

58 голосов
/ 01 октября 2010

Я думаю, это то, что вы хотите:

$friends = $facebook->api('/me/friends');
23 голосов
/ 03 апреля 2012

Это живая версия кода PHP, чтобы получить друзей из Facebook

<?php
    $user = $facebook->getUser();


    if ($user) {
        $user_profile = $facebook->api('/me');
        $friends = $facebook->api('/me/friends');

        echo '<ul>';
        foreach ($friends["data"] as $value) {
            echo '<li>';
            echo '<div class="pic">';
            echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
            echo '</div>';
            echo '<div class="picName">'.$value["name"].'</div>'; 
            echo '</li>';
        }
        echo '</ul>';
    }
?>
12 голосов
/ 20 октября 2010

Хороший способ получить друзей, как описывает @nfvs. Он выводит многомерный массив со всеми друзьями с атрибутами id и name (упорядоченный по id). Вы можете видеть фотографии друзей, как это:

foreach ($friends as $key=>$value) {
    echo count($value) . ' Friends';
    echo '<hr />';
    echo '<ul id="friends">';
    foreach ($value as $fkey=>$fvalue) {
        echo '<li><img src="https://graph.facebook.com/' . $fvalue->id . '/picture" title="' . $fvalue->name . '"/></li>';
    }
    echo '</ul>';
}
7 голосов
/ 30 мая 2014

Просто замечание для любого, кто наткнулся на этот вопрос, используя v2.0 Graph API: это больше не будет работать.В версии 2.0 вызов / me / friends возвращает только список друзей этого человека, которые также используют приложение :

  • Требуется токен доступа пользователя с разрешением user_friends.для просмотра друзей текущего человека.
  • Это вернет только тех друзей, которые использовали (через Facebook Login) приложение, сделавшее запрос.
  • Если друг этого пользователя отклоняет разрешение user_friends,этот друг не будет отображаться в списке друзей этого человека.
3 голосов
/ 22 мая 2015

в последней версии Facebook SDK, Facebook отключил функцию, которая позволяет вам получить доступ к списку друзей из соображений безопасности ... ознакомьтесь с документацией, чтобы узнать больше ...

3 голосов
/ 10 августа 2011

Если вы хотите использовать конечную точку REST,

$friends = $facebook->api(array('method' => 'friends.get'));

иначе, если вы используете график API, тогда используйте,

$friends = $facebook->api('/me/friends');
2 голосов
/ 18 ноября 2011

Вместо этого используйте FQL, он похож на SQL, но для таблиц данных Facebook и легко охватывает запрос данных, который вы хотели бы сделать. Вам не нужно будет использовать все эти вызовы / xx / xxx / xx, просто знайте таблицы и столбцы, в которых вы заинтересованы.

$myQuery = "SELECT uid2 FROM friend WHERE uid1=me()";
$facebook->api( "/fql?q=" . urlencode($myQuery) )

Великолепные интерактивные примеры на http://developers.facebook.com/docs/reference/fql/

0 голосов
/ 02 января 2014
friends.get

Функция для получения списка друзей

И да, это лучше

    $friends = $facebook->api('/me/friends');

    echo '<ul>';
    foreach ($friends["data"] as $value) {
        echo '<li>';
        echo '<div class="pic">';
        echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
        echo '</div>';
        echo '<div class="picName">'.$value["name"].'</div>'; 
        echo '</li>';
    }
    echo '</ul>';
0 голосов
/ 21 мая 2013

Использование CodeIgniter OAuth2 / 0.4.0 искры,

в файле Auth.php,

$user = $provider->get_user_info($token);

$friends = $provider->get_friends_list($token);
print_r($friends);

и в файле Facebook.php в разделе «Поставщик», добавьте следующую функцию,

    public function get_friends_list(OAuth2_Token_Access $token)
    {
            $url = 'https://graph.facebook.com/me/friends?'.http_build_query(array(
                    'access_token' => $token->access_token,
            ));
            $friends = json_decode(file_get_contents($url),TRUE);

            return $friends;
    }

prints the facebenter code hereook friends.
0 голосов
/ 16 мая 2011

заголовок ('Content-type: text / html; charset = utf-8');

ввод на вашей странице.

...