2010-10-23 11 views
12

hay una manera de encontrar la imagen del perfil de un usuario que ha iniciado sesión con su cuenta de google (a través de OpenID).Encontrar la URL de la imagen de perfil de Google cuando el usuario inicia sesión con el proveedor de OpenID de Google

He comprobado el stackoverflow y parece que están usando el servicio gravatar para asignar un avatar a la dirección de correo electrónico. pero debería ser posible obtener la imagen del perfil de usuario de Google directamente desde google.

¿Alguna pista?

Respuesta

12

No es posible con OpenId solo. Tiene dos soluciones:

  • usted no utiliza la imagen de la imagen de Google, pero una imagen proporcionada por un tercero, como Gravatar (que es la forma más sencilla y es lo que se utiliza por Stackoverflow);

  • Usted usa Google Apps Profiles API: vea there para recuperar la foto. En ese caso, el usuario debe estar autenticado, por ejemplo, con el protocolo Oauth: consulte la documentación de Google there. Si eliges esta solución, supongo que seguirás usando OpenId, por lo que usarás OpenId y Oauth. Google admite un protocolo híbrido para simplificar este proceso: el hybrid protocol OpenId+OAuth.

creo que sirve ...

1

EDITAR: Esto no funcionará más porque Google Buzz se descontinúa Mantuve la respuesta aquí solo con fines históricos.

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

se obtiene un archivo XML. A continuación, puede obtener el contenido de < thumbnailUrl> tag, que a su vez es la URL de miniatura del perfil.

Tenga en cuenta que el usuario debe iniciar sesión para que esto funcione.

Espero que esto ayude

+0

no se pudo obtener el archivo xml. está diciendo que no se encuentra todo el tiempo –

+0

Lo siento, no noté que la parte [tu nombre de cuenta de google] desapareció porque estaba usando la sintaxis de la etiqueta HTML. Corregí mi respuesta. Inténtalo de nuevo. – ThiagoAlves

+0

¿Qué es '[su nombre de cuenta de google]' en este contexto? Mi cuenta de gmail es 'firstname.lastname @ gmail.com', que no funciona, no lo hace' firstname.lastname'. – mikemaccana

12

Actualizado: Actualmente, este enfoque no funciona

estoy actualmente uso que el enfoque:

  1. intenta cargar http://profiles.google.com/s2/photos/profile/me?sz=32 (SZ tamaño de la imagen)
  2. si la carga no se realiza correctamente, utilice el icono de Google dummy
  3. También me di cuenta de que si después de mostrar avatar me registro con otra cuenta de Google, la imagen de avatar sigue siendo antigua. Para evitar esto, agrego "& cache_fix =" a la url de la imagen.

    $(".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

Muchas gracias. ¿Puede decirme cómo llegó a saber acerca de la parte de corrección de caché? –

+2

Lo probé con varias cuentas. – user1768976

+1

Esto ya no funciona. – jcoffland

0

Existe una API proporcionada por http://www.avatarapi.com/ que devuelve el nombre y el perfil del usuario pic desde una dirección de correo electrónico y en base a información pública de Google.

Se le puede llamar a través de SOAP o HTTP a esta API punto final: http://www.avatarapi.com/avatar.asmx

Uno de los beneficios de esta API es que no requiere que el usuario sea autenticado con Google, sin embargo, en el caso de que dicho el usuario ya inició sesión, por lo que es posible que esto no se aplique en su caso.

Cuestiones relacionadas