Estou tentando obter o nome e os IDs de meu amigo com a Graph API v2.0, mas os dados retornam vazios:
{
"data": [
]
}
Quando eu estava usando a v1.0, tudo estava bem com a seguinte solicitação:
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
NSArray* friends = [result objectForKey:@"data"];
NSLog(@"Found: %i friends", friends.count);
for (NSDictionary<FBGraphUser>* friend in friends) {
NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
}
}];
Mas agora não posso ter amigos!
Respostas:
Na v2.0 da API do Graph, a chamada
/me/friends
retorna os amigos da pessoa que também usam o aplicativo.Além disso, na v2.0, você deve solicitar a
user_friends
permissão de cada usuário.user_friends
não é mais incluído por padrão em todos os logins. Cada usuário deve conceder auser_friends
permissão para aparecer na resposta a/me/friends
. Consulte o guia de atualização do Facebook para obter informações mais detalhadas ou revise o resumo abaixo.Se você deseja acessar uma lista de amigos que não usam aplicativos, há duas opções:
Se você deseja permitir que seu pessoal marque seus amigos em histórias que eles publicam no Facebook usando seu aplicativo, você pode usar a
/me/taggable_friends
API. O uso desse terminal requer a revisão do Facebook e deve ser usado apenas no caso em que você estiver renderizando uma lista de amigos para permitir que o usuário os marque em uma postagem.Se seu aplicativo for um jogo E seu jogo for compatível com o Facebook Canvas , você poderá usar o
/me/invitable_friends
terminal para renderizar uma caixa de diálogo de convite personalizada e passar os tokens retornados por esta API para o diálogo de solicitações padrão.Em outros casos, os aplicativos não podem mais recuperar a lista completa de amigos de um usuário (apenas aqueles que autorizaram seu aplicativo especificamente usando a
user_friends
permissão). Isso foi confirmado pelo Facebook como 'por design'.Para aplicativos que desejam permitir que as pessoas convidem amigos para usar um aplicativo, você ainda pode usar a caixa de diálogo Enviar na Web ou a nova caixa de diálogo de mensagem no iOS e Android .
ATUALIZAÇÃO: O Facebook publicou uma FAQ sobre essas alterações aqui: https://developers.facebook.com/docs/apps/faq, que explica todas as opções disponíveis para os desenvolvedores para convidar amigos etc.
fonte
taggable_friends
o item nos itens para envio da revisão.taggable_friends
agora não retorna nada. Além disso, a revisão do login é necessária antes que você possa receberuser_friends
permissão.Embora a resposta de Simon Cross seja aceita e correta, pensei em reforçá-la um pouco com um exemplo (Android) do que precisa ser feito. Vou mantê-lo o mais geral possível e me concentrar apenas na questão. Pessoalmente, acabei armazenando coisas em um banco de dados para que o carregamento fosse tranquilo, mas isso requer um CursorAdapter e ContentProvider, que está um pouco fora do escopo aqui.
Eu vim aqui e pensei: e agora ?!
O problema
Assim como user3594351 , eu estava percebendo que os dados do amigo estavam em branco. Descobri isso usando o FriendPickerFragment. O que funcionou há três meses, não funciona mais. Até os exemplos do Facebook quebraram. Portanto, meu problema foi 'Como faço para criar FriendPickerFragment manualmente?
O que não funcionou
A opção 1 de Simon Cross não era forte o suficiente para convidar amigos para o aplicativo. Simon Cross também recomendou o Diálogo de Solicitações, mas isso permitiria apenas cinco solicitações por vez. O diálogo de solicitações também mostrava os mesmos amigos durante qualquer sessão de logon do Facebook. Nao é útil.
O que funcionou (Resumo)
Opção # 2 com algum trabalho duro. Você deve certificar-se de cumprir as novas regras do Facebook: 1.) Você é um jogo 2.) Você tem um aplicativo Canvas (presença na Web) 3.) Seu aplicativo está registrado no Facebook. Tudo é feito no site do desenvolvedor do Facebook em Configurações .
Para emular o seletor de amigos manualmente no meu aplicativo, fiz o seguinte:
Detalhes
O AsynchTask
A classe FacebookFriend que criei
fonte
O Facebook revisou suas políticas agora. Você não pode obter toda a lista de amigos de qualquer maneira, se o aplicativo não tiver uma implementação do Canvas e se o aplicativo não for um jogo. Claro que também há taggable_friends, mas esse é apenas para marcação.
Você poderá puxar a lista de amigos que autorizaram apenas o aplicativo.
Os aplicativos que estão usando a Graph API 1.0 estarão funcionando até 30 de abril de 2015 e depois disso serão preteridos.
Veja o seguinte para obter mais detalhes sobre isso:
Amigos do usuário
Perguntas frequentes sobre desenvolvimento de aplicativos do Facebook
fonte
No Swift 4.2 e no Xcode 10.1:
Se você deseja obter a lista de amigos do Facebook, envie seu aplicativo para análise no Facebook. Veja algumas das permissões de logon:
Permissões de login
Aqui estão os dois passos:
1) Primeiro, o status do seu aplicativo deve estar no Live
2) Obtenha as permissões necessárias do Facebook.
1) Ative o status do nosso aplicativo ao vivo:
Vá para a página de aplicativos e selecione seu aplicativo
https://developers.facebook.com/apps/
Selecione o status no canto superior direito do Painel .
Enviar URL da política de privacidade
Selecionar categoria
Agora, nosso aplicativo está no status Ao vivo .
Uma etapa está concluída.
2) Envie nosso aplicativo para revisão:
Primeiro, envie as solicitações necessárias.
Exemplo: user_friends, user_videos, user_posts etc.
Segundo, vá para a página Solicitação Atual
Exemplo: user_events
Enviar todos os detalhes
Como este envio para todas as solicitações (user_friends, user_events, user_videos, user_posts etc.).
Por fim, envie seu aplicativo para análise.
Se a sua crítica for aceita do lado do Facebook, você estará qualificado para ler contatos etc.
fonte
user_friends
permissão é muito limitada. Da documentação do Facebook (abril de 2019): [Isso apenas] concede permissão ao aplicativo para acessar uma lista de amigos que também usam o aplicativo. Essa permissão é restrita a um conjunto limitado de parceiros e o uso requer aprovação prévia do Facebook. Para que uma pessoa apareça na lista de amigos de outras pessoas, é necessário que ambas tenham compartilhado sua lista de amigos com o aplicativo e não tenham desabilitado essa permissão durante o login.Como Simon mencionou, isso não é possível na nova API do Facebook. Puro tecnicamente falando, você pode fazer isso através da automação do navegador.
Exemplo de implementação usando WatiN :
Protótipo com a implementação dessa abordagem (usando C # / WatiN), consulte https://github.com/svejdo1/ShadowApi . Também está permitindo a atualização dinâmica do conector do Facebook que está recuperando uma lista de seus contatos.
fonte
Tente
/me/taggable_friends?limit=5000
usar seu código JavaScriptOu
tente a API do Graph :
https://graph.facebook.com/v2.3/user_id_here/taggable_friends?access_token=
fonte
Na SDK Graph API do Facebook v2.0 ou superior, você deve solicitar a permissão user_friends de cada usuário no momento do login do Facebook, pois user_friends não é mais incluído por padrão em todos os logins ; nós temos que adicionar isso.
Cada usuário deve conceder a permissão user_friends para aparecer na resposta a / me / friends .
Portanto, no momento do login no Facebook, ele exibe uma tela que contém todas as permissões:
Se o usuário pressionar o botão Continuar , as permissões serão definidas. Quando você acessa a lista de amigos usando a API do Graph, seus amigos que fizeram login no aplicativo como acima serão listados
A saída conterá os usuários que concederam a permissão user_friends no momento do login no seu aplicativo através do Facebook.
fonte