web-dev-qa-db-fra.com

Obtenir une liste d'amis Facebook avec la dernière API

J'utilise la version la plus récente du SDK Facebook (qui permet de se connecter à quelque chose appelé l'API graphique, bien que je ne sois pas sûr). J'ai adapté l'exemple de code de Facebook pour me permettre de me connecter à Facebook, ce qui fonctionne ... mais je ne peux pas obtenir la liste de mes amis.

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

Cela génère le message d'erreur suivant: "Erreur fatale: Exception OAuthException: (# 803). Certains des alias demandés n'existent pas: friends.get renvoyé dans /mycode/facebook.php à la ligne 543"

Aucune idée pourquoi c'est ou ce que cela signifie. Quelqu'un peut-il me dire la bonne syntaxe (pour la dernière API de Facebook) pour obtenir une liste d'amis? (J'ai essayé "$ friends = $ facebook-> api-> friends_get ();" et j'ai obtenu une erreur différente, "Erreur fatale: appel d'une fonction membre friends_get () sur un non-objet dans /mycode/example.php on ligne 129 ".)

Je peux confirmer qu'AVANT ce point dans mon code, tout va bien: je suis connecté à Facebook avec une session valide et je peux obtenir mes informations et les vider à l'écran juste ... c'est-à-dire que ce code s'exécute parfaitement avant les amis défaillants. Appelez:

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

Je pense que c'est ce que vous voulez:

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

Ceci est la version en direct de PHP Code pour obtenir vos amis de 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>';
    }
?>
23
Yash Kumar

Obtenir les amis comme décrit par @nfvs est un bon moyen. Il génère un tableau multidimensionnel avec tous les amis avec les attributs id et name (classés par id). Vous pouvez voir les photos d'amis comme ceci:

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>';
}
12
geoffa

Juste un avertissement pour ceux qui tombent sur cette question en utilisant la v2.0 de l’API Graph: Cela ne fonctionnera plus. Dans la v2.0, l'appel de/me/friends renvoie uniquement une liste des amis de la personne qui utilisent également l'application :

  • Un jeton d'accès utilisateur avec permission user_friends est requis pour afficher les amis de la personne actuelle.
  • Cela ne renverra que les amis qui ont utilisé (via Facebook Login) l'application qui en fait la demande.
  • Si un ami de la personne refuse l'autorisation user_friends, cet ami ne s'affichera pas dans la liste d'amis de cette personne.
7
Mads Foli Bjerre

Si vous souhaitez utiliser le point final REST,

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

sinon, si vous utilisez le graphique api, utilisez,

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

dans la version récente de facebook sdk, facebook a désactivé la fonctionnalité qui vous permettait d'accéder à une liste d'amis pour des raisons de sécurité ... consultez la documentation pour en savoir plus ...

3
user2244112

Utilisez FQL à la place, c'est un peu comme SQL mais pour les tables de données de Facebook et couvre facilement les requêtes de données que vous voulez faire .. .. Vous n'avez pas à utiliser tous ces appels/xx/xxx/xx, il vous suffit de connaître les tables et les colonnes qui vous intéressent.

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

Grands exemples interactifs sur http://developers.facebook.com/docs/reference/fql/

2
Michael Vain

Utiliser les étincelles CodeIgniter OAuth2/0.4.0,

dans le fichier Auth.php,

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

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

et dans le fichier Facebook.php sous Fournisseur, ajoutez la fonction suivante,

    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
ShivarajRH
friends.get

Est fonction pour obtenir une liste des amis

Et oui c'est mieux 

    $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
Deepak Kumar