22 votes

facebook oauth, pas d'image avec les permissions de base

J'utilise oauth pour connecter les utilisateurs de Facebook à mon application. Je fais des tests avec mon compte FB et avec les permissions de base. La documentation de Facebook indique que je devrais pouvoir obtenir la propriété 'picture' avec les autorisations de base, mais mon compte n'a pas de propriété 'picture' lorsque j'y accède avec l'API. Le prénom, le nom de famille, etc. sont pourtant présents.

Est-ce parce que mon compte n'est pas accessible au public ? Pourquoi cela se produit-il ? J'ai bien une photo de profil.

Voici mon lien FB : http://www.facebook.com/josh.nankin

20voto

maddin2code Points 200

La meilleure solution consiste à conserver les autorisations de base et à renvoyer la demande d'image dans une étape distincte. Demandez à l'interface graphique de cette manière :

https://graph.facebook.com/[fb_user_id]?fields=picture.type(small)

image plus grande :

https://graph.facebook.com/[fb_user_id]?fields=picture.type(large)

Vous obtiendrez une réponse JSON du type :

{
   "id": "100001XXXXXXXXX",
   "picture": {
      "data": {
         "url": "http://profile.ak.fbcdn.net/hprofile-XXXX/41524_1000018XXX51507_XXXX3_q.jpg",
         "is_silhouette": false
      }
   }
}

10voto

Dark_eye Points 415

Vous pouvez dériver l'URL de la photo de profil directement à partir de l'information OAuth standard de base renvoyée par Facebook, comme l'a indiqué Josh Nankin, MAIS avec une précision.

Vous pouvez toujours utiliser l'identifiant de l'utilisateur renvoyé pour demander la photo, par exemple :

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

est identique à

https://graph.facebook.com/dark.eye.1/picture?type=large

De cette manière, une seule demande doit être effectuée, car vous pouvez interpoler l'URL de la photo au fur et à mesure que vous la stockez dans la base de données.

6voto

Josh Nankin Points 735

Donc, je ne sais toujours pas pourquoi l'API graphique ne renvoie pas une propriété d'image lorsque vous utilisez le chemin /me sur l'API, mais une fois que vous avez le nom d'utilisateur de /me, vous pouvez obtenir l'image assez facilement :

https://graph.facebook.com/USERNAME/picture

5voto

CBroe Points 31889

https://developers.facebook.com/docs/reference/api/user/ :

"image : L'URL de la photo de profil de l'utilisateur ( n'est renvoyé que si vous spécifiez explicitement un paramètre "fields=picture". )"

Vous n'avez sans doute pas oublié la partie marquée en gras ?

2voto

Vihanga Yasith Points 266

En fait, vous n'avez pas besoin d'autoriser l'accès public pour obtenir la photo de profil puisque vous pouvez obtenir l'ID_UTILISATEUR. Grâce à l'USER_ID, vous pouvez facilement accéder à la photo de profil.

function checkLoginState() {
    FB.getLoginStatus(function(response) {
        statusChangeCallback(response);
        console.log('Welcome!  Fetching your information.... ');
        var url = '/me?fields=id,name';
        FB.api(url, function(response) {
             var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=large';
             document.getElementById("id_of_link_tag").href = linkpp;
        });
    });
}

Vous pouvez modifier les type dans la variable linkpp à type=small qui renvoie une image de faible résolution.

var linkpp = 'https://graph.facebook.com/' + response.id + '/picture?type=small';

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X