2010-10-23 41 views
12

est-il possible de trouver l'image de profil d'un utilisateur connecté avec son compte google (via OpenID).Recherche d'une URL d'image de profil google lorsque l'utilisateur est connecté avec le fournisseur OpenID de Google

J'ai vérifié stackoverflow et il semble qu'ils utilisent le service Gravatar pour attribuer un avatar à l'adresse e-mail. mais il devrait être possible d'aller chercher l'image du profil google de l'utilisateur directement à partir de google.

aucune idée?

Répondre

12

Il est impossible avec OpenId seul. Vous avez deux solutions:

  • Vous n'utilisez pas l'image d'image Google, mais une image fournie par un tiers comme Gravatar (c'est la façon la plus simple et il est ce qui est utilisé par Stackoverflow); Vous utilisez le Google Apps Profiles API: voir there pour récupérer la photo. Dans ce cas, l'utilisateur doit être authentifié, par exemple avec le protocole Oauth: voir la documentation Google there. Si vous choisissez cette solution, je suppose que vous continuerez à utiliser OpenId, donc vous utiliserez à la fois OpenId et Oauth. Google prend en charge un protocole hybride pour simplifier ce processus: le hybrid protocol OpenId+OAuth.

Hope it helps ...

1

EDIT: Cela ne fonctionnera plus car Google Buzz est abandonné J'ai gardé la réponse ici à des fins historiques seulement.

https://www.googleapis.com/buzz/v1/people/[your google account name]/@self

donne un fichier XML. Vous pouvez ensuite obtenir le contenu de la balise < thumbnailUrl, qui à son tour est l'URL de la vignette du profil.

Veuillez noter que l'utilisateur doit être connecté pour que cela fonctionne.

Hope this helps

+0

Impossible d'obtenir le fichier xml. –

+0

Désolé, je n'ai pas remarqué que la partie [votre nom de compte Google] a disparu parce que j'utilisais la syntaxe de balise HTML. J'ai corrigé ma réponse. Veuillez réessayer. – ThiagoAlves

+0

Qu'est-ce que '[votre nom de compte google]' dans ce contexte? Mon compte Gmail est 'firstname.lastname @ gmail.com', ce qui ne fonctionne pas, pas' firstname.lastname'. – mikemaccana

12

À JOUR: actuellement, cette approche ne fonctionne pas

J'utilise actuellement cette approche:

  1. essayez de charger http://profiles.google.com/s2/photos/profile/me?sz=32 (sz est taille de l'image)
  2. si la charge est en panne, utilisez l'icône google factice
  3. Je suis également remarqué que si après avoir montré l'avatar je me connecte avec un autre compte google, l'image de l'avatar est encore ancienne. Pour éviter cela, j'ajoute "& cache_fix =" à l'image de l'URL.

    $(".social_avatar") 
        .load(function() { $(".social_avatar").css('visibility', 'visible'); }) 
        .error(function() { $(".social_avatar").attr('src', "/dummy_google_icon.png"); }) 
        .css('visibility', 'hidden') 
        .attr("src", "http://profiles.google.com/s2/photos/profile/me?sz=32&cache_fix=<userid>"); 
    
+0

Merci beaucoup.Pouvez-vous me dire comment vous avez appris à connaître la partie fixe du cache? –

+2

Je l'ai testé avec plusieurs comptes. – user1768976

+1

Cela ne fonctionne plus. – jcoffland

0

Il existe une API fournie par http://www.avatarapi.com/ qui retourne à partir d'une adresse e-mail et basée sur les informations publiques de Google le nom et l'image profil de l'utilisateur.

Il peut être appelé via SOAP ou HTTP à ce point de terminaison API: http://www.avatarapi.com/avatar.asmx

L'un des avantages de cette API est qu'il ne nécessite pas l'utilisateur à authentifier avec Google, mais dans votre cas, vous avez dit l'utilisateur était déjà connecté, cela peut ne pas s'appliquer à vous.