Pergunta

Eu estou usando a versão mais recente do Facebook SDK (que permite ligar a algo chamado "graph API' embora eu não tenho certeza).Eu me adaptei Facebook do código de exemplo para me conectar ao Facebook e que funciona...mas eu não pode obter uma lista dos meus amigos.

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

Isso produz a mensagem de erro:"Erro Fatal:Não Identificada OAuthException:(#803) Alguns dos apelidos que você solicitou não existe:os amigos.lançada em /mycode/facebook.php na linha 543"

Não faço idéia de por que o que é ou o que isso significa.Alguém pode me dizer o direito (sintaxe para o mais recente Facebook API) para obter uma lista de amigos?(Eu tentei "$amigos = $facebook->api>friends_get();" e diferente de erro, "erro Fatal:Chamada para uma função de membro friends_get() em um objeto não-em /mycode/example.php na linha 129".)

Posso confirmar que, ANTES de este ponto no meu código, as coisas estão bem:Eu estou conectado ao Facebook com uma sessão válida e que eu possa obter as informações e despejá-lo na tela apenas...i.e.esse código é executado perfeitamente antes de a falha de amigos.obtenha chamada:

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

Solução

Eu acho que é isso que você quer:

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

Outras dicas

Esta é a versão ao vivo do código PHP para obter seus amigos do 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>';
    }
?>

Recebendo os amigos como @nfvs descreve é um bom caminho.Ele gera uma matriz multidimensional com todos os amigos com os atributos id e nome (ordenado pelo id).Você pode ver os amigos em fotos como esta:

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

Apenas um aviso para qualquer pessoa tropeçando nessa pergunta usando a v2.0 da API do gráfico: isso não funcionará mais. Na v2.0, me ligar /amigos /amigos retorna apenas uma lista dos amigos da pessoa que também use o aplicativo:

  • É necessário um token de acesso ao usuário com a permissão de user_friends para visualizar os amigos da pessoa atual.
  • Isso retornará apenas qualquer amigo que tenha usado (via Login do Facebook) o aplicativo que faz a solicitação.
  • Se um amigo da pessoa recusar a permissão de user_friends, esse amigo não aparecerá na lista de amigos para essa pessoa.

Se você quiser usar o ponto final,

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

caso contrário, se você estiver usando a API do gráfico, use, use,

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

Na versão recente do SDK do Facebook, o Facebook desativou o recurso que permite acessar uma lista de um amigo devido a razões de segurança ... verifique a documentação para saber mais ...

Use o FQL, em vez disso, é um SQL como as tabelas de dados do Facebook e abrange facilmente a consulta de dados que você gosta de fazer. Você não precisará usar todas essas chamadas/xx/xxx/xx, apenas conheça as tabelas e colunas em que você está interessado.

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

Ótimos exemplos interativos em http://developers.facebook.com/docs/reference/fql/

Usando codeigniter OAuth2/0.4.0 Sparks,

no arquivo auth.php,

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

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

e no arquivo facebook.php sob provedor, adicione a seguinte função,

    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

É a função para obter uma lista de amigos

E sim, isso é melhor

    $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>';

Cabeçalho ('Tipo de conteúdo: texto/html; charset = utf-8');

entrada na sua página.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top