API do Facebook Graph: obtenha imagens maiores em uma solicitação


88

Atualmente estou usando o Graph API Explorer para fazer alguns testes. Essa é uma boa ferramenta.

Quero obter a lista de amigos do usuário, com nomes, ids e fotos dos amigos. Então eu digito:

https://graph.facebook.com/me/friends?fields=id,picture,name

Mas a imagem é apenas 50x50 e eu gostaria de uma maior nesta solicitação.

É possível ?

Respostas:


69

você não precisa puxar o atributo 'imagem' embora. há uma maneira muito mais conveniente, a única coisa que você precisa é a id do usuário, veja o exemplo abaixo;

https://graph.facebook.com/user_id/picture?type=large

tipo ps define o tamanho que você deseja

Por favor, tenha em mente que usando token com permissões básicas, / me / friends retornará a lista de amigos apenas com atributos id + name


1
Mas não concordo com a última frase: com permissão básica, você pode acessar mais do que o atributo id + nome, ex: graph.facebook.com/btaylor
Martin

29
uhm, que tal "em um pedido"?
Iulian Onofrei

4
Você também pode usar full_picture em vez de imagem.
Bo Pennings

"mensagem": "(# 12) borda da imagem para este tipo está obsoleto para as versões v2.3 e superior",
Toolkit

198

Conforme descrito neste bug no Facebook, você também pode solicitar tamanhos de imagem específicos agora por meio da nova sintaxe de " expansão de campo " da API .

Igual a:

https://graph.facebook.com/____OBJECT_ID____?fields=picture.type(large)

27
De fato. fields = picture.width (640) é ainda melhor.
kaay

6
Parece que a API Graph do Facebook mudou sua API. O Facebook respondeu "Subcampos não são suportados por imagem" quando tentei usar sua sugestão.
Phat H. VU

2
erro de obtenção: {"error": {"message": "Solicitação de obtenção não suportada. Leia a documentação da API Graph em developers.facebook.com/docs/graph-api ", "type": "GraphMethodException", "code": 100}}
Vineesh TP

13
Veja o? Field = full_picture, anexos para consultas 2.x
Kevin,

3
Com as novas alterações do Facebook, não é possível obter uma imagem maior. Alguma dica de alguém?
shadab.tughlaq

81

A melhor maneira de fazer com que todos os amigos (que também estão usando o aplicativo, é claro) tenham tamanhos de imagem corretos é usar a expansão de campo , seja com uma das tags de tamanho (quadrado, pequeno, normal, grande):

/me/friends?fields=picture.type(large)

(editar: isso não funciona mais)

... ou você pode especificar a largura / altura:

me/friends?fields=picture.width(100).height(100)

Aliás, você também pode escrever assim:

me?fields=friends{picture.type(large)}

1
obrigado pela informação, atualizarei a resposta. full_picture não parece funcionar para amigos: / me / friends? fields = full_picture - você tem alguma ideia de como isso seria possível?
luschn

34

Altere a matriz de campos id,name,pictureparaid,name,picture.type(large)

https://graph.facebook.com/v2.8/me?fields=id,name,picture.type(large)&access_token=<the_token>

Resultado:

{
   "id": "130716224073524",
   "name": "Julian Mann",
   "picture": {
      "data": {
         "is_silhouette": false,
         "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/15032818_133926070419206_3681208703790460208_n.jpg?oh=a288898d87420cdc7ed8db5602bbb520&oe=58CB5D16"
      }
   }
}

7
Qual é o tamanho de 200 x 200?
AlxVallejo

1
No último (2.10) Graph API não está disponível em tamanho "grande":Graph returned an error: (#100) For field 'picture': type must be one of the following values: thumbnail, small, album
Honza

33

Você pode definir o tamanho da imagem em pixels, assim:

https://graph.facebook.com/v2.8/me?fields=id,name,picture.width(500).height(500)

De maneira semelhante, o typeparâmetro pode ser usado

{user-id}/?fields=name,picture.type(large)

Da documentação

digite enum {pequeno, normal, álbum, grande, quadrado}



20

Eu pesquisei o Graph API Explorer extensivamente e finalmente encontrei full_picture

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture

PS Percebi que full_picture nem sempre fornece a imagem em tamanho real que desejo. 'anexos' faz

https://graph.facebook.com/v2.2/$id/posts?fields=picture,full_picture,attachments

esta é apenas a largura de exibição: 720px. sua única foto grande encontra-se assim. para o maior graph.facebook.com/photo_id você pode ver 6 tamanhos diferentes de fotos.
gokhan

Acabei de testar isso com o endpoint de amigos e não funcionou
luschn

9

Hum ... acho que encontrei uma solução.

Na verdade, pode apenas solicitar

https://graph.facebook.com/me/friends?fields=id,name

De acordo com http://developers.facebook.com/docs/reference/api/ (seção "Imagens"), a url das fotos do perfil pode ser construída com o ID do usuário

Por exemplo, supondo que o ID do usuário esteja em $ id:

"http://graph.facebook.com/$id/picture?type=square"
"http://graph.facebook.com/$id/picture?type=small"
"http://graph.facebook.com/$id/picture?type=normal"
"http://graph.facebook.com/$id/picture?type=large"

Mas não é o URL final da imagem, então se alguém tiver uma solução melhor, ficarei feliz em saber :)



3

Você pode especificar width& heightem sua solicitação à API gráfica do Facebook:http://graph.facebook.com/user_id/picture?width=500&height=500


2

De v2.7, /<picture-id>?fields=imagesapresentará uma lista com diferentes tamanhos de imagens, sendo o primeiro elemento a imagem em tamanho real.

Não conheço nenhuma solução para várias imagens de uma vez.


1

No URL das imagens encontrado nas respostas do gráfico (as " http://photos-c.ak.fbcdn.net/ "), basta substituir o padrão "_s.jpg" por "_n.jpg" (? Tamanho normal) ou "_b.jpg" (? tamanho grande) ou "_t.jpg" (miniatura).

URLs Hacakable / API REST tornam a Web melhor.


1
Parece sempre fornecer "Ocorreu um erro ao processar sua solicitação. Referência # 50.27f74317.14274.604fb0" agora, infelizmente
Kevin

1

usuários rest-fb (imagem quadrada, res. maior): Connection myFriends = fbClient.fetchConnection ("me / friends", User.class, Parameter.with ("fields", "public_profile, email, first_name, last_name, gender, picture .width (100) .height (100) "));


1

Recebi este erro quando fiz uma solicitação com picture.type(full_picture):

"(# 100) Para o campo 'imagem': o tipo deve ser um dos seguintes valores: pequeno, normal, álbum, grande, quadrado"

Quando faço a solicitação com picture.type(album)e picture.type(square), me responde com uma imagem de tamanho 50x50 pixel.

Quando faço a solicitação com picture.type(large), me responde com um tamanho de imagem de 200x200 pixels.

Quando eu faço a solicitação com picture.width(800), me responde com um tamanho de pixel 477x477 de imagem.

com picture.width(250), respostas 320x320.

com picture.width(50), respostas 50x50.

com picture.width(100), respostas 100x100.

com picture.width(150), respostas 160x160.

Eu acho que o Facebook dá as imagens que são redimensionadas de maneiras diferentes quando o usuário adiciona essa foto pela primeira vez.

O que vejo aqui a API para solicitação de imagem do usuário não suporta o redimensionamento da imagem solicitada. Isso dá o tamanho de imagem mais próximo, eu acho.


Verdadeiro ... "picture.type (large)" também me deu um 200x200 - não muito grande, devo dizer
James

0

Acho que, a partir de agora, a única maneira de obter fotos grandes de amigos é usando FQL. Primeiro, você precisa buscar uma lista de amigos:

https://graph.facebook.com/me/friends

Em seguida, analise essa lista e extraia todos os amigos ids. Quando você tiver isso, basta executar a seguinte consulta FQL:

SELECT id, url FROM profile_pic WHERE id IN (id1, id2) AND width=200 AND height=200

200aqui é apenas um tamanho exemplar, você pode inserir qualquer coisa. Você deve obter a seguinte resposta:

{
  "data": [
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }, 
    {
      "id": ..., 
      "url": "https://fbcdn-profile-a.akamaihd.net/..."
    }
  ]
}

Com cada url sendo o link para uma imagem de 200x200px.




0

Variante com estilo JS. Basta definir a largura da imagem grande e enorme e você terá a maior variante.

FB.api(
  '/' + userId,
  {fields: 'picture.width(2048)'},
  function (response) {
    if (response && !response.error) {
      console.log(response.picture.data.url);
    }
  }
);

0

Você pode usar full_picture em vez da chave de imagem para obter a imagem em tamanho real.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.