Получение списка друзей Facebook с последними API

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

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

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

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

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

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

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

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

Это живая версия 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>'; } ?> 

Получение друзей, таких как @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>'; } 

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

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

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

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

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

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

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

Вместо этого используйте 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/

Используя искры 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. 
 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>'; 

header ('Content-type: text / html; charset = utf-8');

введите свою страницу.