Obter imagem de perfil de usuário por ID

123

Agora estou trabalhando em um aplicativo da Web que é principalmente baseado na API de gráfico do Facebook. Eu mantenho alguns dados sobre usuários - na verdade, os possíveis dados públicos disponíveis - como nome e ID. Também sei que uma foto de perfil faz parte dos dados públicos e me perguntei como poderei obter um link direto para uma foto de perfil de um usuário apenas usando seu ID?

desde já, obrigado


fonte

Respostas:

295

http://graph.facebook.com/ "+ facebookId +" / picture? type = square Por exemplo: http://graph.facebook.com/67563683055/picture?type=square

Há também mais tamanhos além de "quadrado". Veja os documentos .

Zack Bartel
fonte
31
Para quem quiser o link para os docs: developers.facebook.com/docs/graph-api/reference/user/picture
Frankie Jarrett
32
É melhor olhar para os documentos, porque eles também têm todas as outras opções. Por exemplo, se você deseja uma imagem quadrada grande (já que o padrão do quadrado é pequeno), você deve usar https://graph.facebook.com/{facebookId}/picture?type=large&width=720&height=720.
Sudo
2
existe uma maneira de apenas consultar o URL da imagem e não a imagem em si? Gostaria de fazer upload da imagem no front-end não através do servidor, se possível
Alexander Mills
1
Esperemos que isto irá salvar alguém um passo extra em encontrar o seu ID perfil - findmyfbid.com
jarmerson
3
uso redirect = 0 para obter a descrição JSON (incl url.) em vez da própria imagem
Ilya Denisov
123

Você pode usar os seguintes URLs para obter tamanhos diferentes de imagens de perfil. Certifique-se de adicionar o ID do Facebook ao URL.

Foto em tamanho grande https://graph.facebook.com/ {facebookId} / picture? Type = large

Foto de tamanho médio https://graph.facebook.com/ {facebookId} / picture? Type = normal

Foto de tamanho pequeno https://graph.facebook.com/ {facebookId} / picture? Type = small

Foto quadrada https://graph.facebook.com/ {facebookId} / picture? Type = square

Dulitha Kumarasiri
fonte
2
Foi assim que eu pude descobrir meu próprio FacebookID: developers.facebook.com/tools/explorer/…
Ryan
39

Para obter o maior tamanho da imagem

https://graph.facebook.com/{userID}?fields=picture.width(720).height(720) 

ou qualquer outra coisa que você precise como tamanho. Com base na experiência, type = large não é o maior resultado que você pode obter.

reyalsnogard
fonte
1
também pode passar: graph.facebook.com {ID do usuário}? fields = picture.type (large) isso é útil quando você tem algo parecido com isto, String url = " graph.facebook.com/me?fields=id,name,email , picture.type (grande) , como mencionado em outras respostas você pode substituir grande com normal, pequena, quadrada ...
yajnesh
Isso não precisa de um token de acesso (hoje em dia)?
Bernoulli IT
13

Isso está literalmente na primeira página da documentação da API do Graph .

  • /OBJECT_ID/picture retorna um redirecionamento para a imagem do objeto (neste caso, os usuários)
  • /OBJECT_ID/?fields=picture retorna o URL da imagem

Exemplos:

<img src="https://graph.facebook.com/4/picture"/> usa um redirecionamento HTTP 301 para a foto do perfil de Zuck

https://graph.facebook.com/4?fields=picture retorna o próprio URL

Igy
fonte
1
Infelizmente, ele não é mais na página inicial dos docs Graph API, é agora aqui: developers.facebook.com/docs/graph-api/using-graph-api
Igy
3
NÃO , não está na primeira página da documentação da API do Graph. É melhor evitar declarações de restrição de tempo no SO. Você sabe .. as coisas mudam muito rápido esses dias ...
Gianluca Ghettini
e, ironicamente, a sua resposta é muito mais útil com informações mais relevantes do que a página api gráfico de qualquer maneira :-)
Simon_Weaver
6

Aqui, esta API permite que você obtenha facilmente fotos de perfil no fb, google e twitter

https://www.avatars.io/

É uma API que retorna a imagem do perfil quando recebe um nome de usuário para uma variedade de redes sociais, incluindo Twitter, Facebook, Instagram e gravatar. Possui bibliotecas para iOS, Android, Ruby, Node, PHP, Python e JavaScript.

Norielle Cruz
fonte
1
Isso é realmente fantástico! Só porque o SO gosta de links para serem descritos com mais detalhes; é uma API que retorna a imagem do perfil quando recebe um nome de usuário para várias redes sociais, incluindo Twitter, Facebook, Instagram e gravatar. Possui bibliotecas para iOS, Android, Ruby, Node, PHP, Python e JavaScript. Uma peça excepcional de software. Pode ser encontrado no GitHub .
Ari Cooper-Davis
3

você pode obtê-lo usando este URL: você receberá a imagem em HD (tamanho máximo)

https://graph.facebook.com/{userID}?fields=picture.width(720).height(720)&redirect=false

não esqueça redirect = false ou ele retornará um erro

Mahmoud Turki
fonte
2

Use o URL como: https: //graph.facebook.com/ user_id / picture? Type = square no src da tag img. O tipo pode ser pequeno, grande.

Needhi Agrawal
fonte
2

Você pode usar AngularJs para isso. Seu recurso de ligação de dados de duas vias obterá solução com o mínimo esforço e menos código.

<div> <input type="text" name="" ng-model="fbid"><br/> <img src="https://graph.facebook.com/{{fbid}}/picture?type=normal"> </div>

Espero que isso responda à sua consulta.Nota: Você também pode usar outra biblioteca.

Srinivas
fonte
1

Através do Javascript SDK (v2.12 - abril de 2017), você pode obter os detalhes da solicitação de imagem da seguinte maneira:

FB.api("/" + uid + "/picture?redirect=0", function (response) {
  console.log(response);

  // prints the following:
  //data: {
  //  height: 50
  //  is_silhouette: false
  //  url: "https://lookaside.facebook.com/platform/profilepic/?asid=…&height=50&width=50&ext=…&hash…"
  //  width: 50
  //}

  if (response && !response.error) {
    // change the src attribute of img elements
    [...document.getElementsByClassName('fb-user-img')].forEach(
      i => i.src = response.data.url
    );

    // OR redirect to the URL above
    location.assign(response.data.url);
  }
});

Para obter a resposta JSON, o parâmetro redirectcom 0 (zero) como valor é importante, pois a solicitação é redirecionada para a imagem por padrão. Você ainda pode adicionar outros parâmetros no mesmo URL. Exemplos:

  • "/" + uid + "/picture?redirect=0&width=100&height=100": uma imagem 100x100 será retornada;
  • "/" + uid + "/picture?redirect=0&type=large": uma imagem de 200 x 200 é retornada. Outros possíveis valores de tipo incluem: pequeno , normal , álbum e quadrado .
CPHPython
fonte
1

De acordo com a corrente mais recente Facebook API versão 3.2, para os usuários, você pode usar este método genérico para obter imagem no perfil é https://graph.facebook.com/v3.2/{user-id}/picture?type=square você pode visite a documentação para a foto do usuário aqui . Os valores possíveis para o parâmetro type no URL podem ser pequenos, normais, álbuns, grandes, quadrados

Para Grupos e Páginas , a foto do perfil não está disponível diretamente. Você precisa obtê-los usando o token de acesso. Para grupos, é necessário usar o token de acesso do usuário e, para o Pages, o token de acesso do usuário e o token de acesso à página.

Você pode obter uma imagem de perfil de grupo ou de página usando o URL genérico: https://graph.facebook.com/v3.2/{user-id}/picture?access_token={access-token}&type=square

Espero que isso seja útil para pessoas que estão procurando imagens de perfil de página ou de grupo.

Avtar Gaur
fonte
Na maioria das páginas, estou obtendo a foto do perfil das páginas sem token de acesso, mas em algumas páginas ela retorna uma imagem de ponto de interrogação como resposta no formato abaixo. {"data": {"is_silhouette": true, "url": " static.xx.fbcdn.net/rsrc.php/v3/y6/r/_xS7LcbxKS4.gif "}} Alguma pista?
Xyz
0

Você pode usar o seguinte ponto de extremidade para obter o image.jfif em vez de jpg:

https://graph.facebook.com/v3.2/{user-id}/picture

Observe que você não poderá ver a imagem, apenas faça o download.

Rachan Neamprasert
fonte