Obter lista do Facebook de amigos com o mais recente da API
-
26-09-2019 - |
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);
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.