Obtener la url de la imagen de perfil de Google + con id de usuario


Sé que muchas API de redes sociales proporcionan una forma de construir una url a la imagen de perfil de un usuario, utilizando su user_id o nombre de usuario. Para Facebook se ve así:

http://graph.facebook.com/user_id/picture?type=square

Ahora, ¿hay algo como esto para Google Plus? ¿O alguna otra forma de obtener la foto del usuario sin una llamada a la API??

Author: ArVan, 2012-02-03

10 answers

Google había cambiado su política por lo que la antigua forma de obtener la imagen de perfil de Google no funcionará ahora, que era

Https://plus.google.com/s2/photos/profile/(user_id)? sz=150

La nueva forma de hacer esto es

URL de solicitud

https://www.googleapis.com/plus/v1/people/115950284...320?fields=image&key={YOUR_API_KEY}

Que dará la url de la imagen de perfil de Google en formato json como se indica a continuación

Respuesta:

{
    "image": 
    {
         "url": "https://lh3.googleusercontent.com/-OkM...AANA/ltpH4BFZ2as/photo.jpg?sz=50"
    }
}


Se pueden encontrar más parámetros para enviar con URL que puede necesitar desde aquí

Para más detalles, también puede consultar la pregunta dada donde he respondido para el mismo tipo de problema ¿Cómo obtener una imagen de usuario a través del id de usuario en Google plus?

Feliz Codificación!!

 92
Author: Deepak Goswami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:34:37

ACTUALIZACIÓN: El siguiente método NO FUNCIONA desde 2015

Es posible obtener la foto de perfil, e incluso puede establecer el tamaño de la misma:

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>

Ejemplo: Mi foto de perfil, con tamaño establecido en 100 píxeles:

https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100

Uso con una etiqueta de imagen:

<img src="https://plus.google.com/s2/photos/profile/116018066779980863044?sz=100" width="100" height="100">

Espero que lo hagas funcionar!

 91
Author: Emil Stenström,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-31 16:16:56

ACTUALIZACIÓN: Google dejó de admitir este método, que ahora devuelve un error 404 (no encontrado) .


Todas estas url obtienen la imagen de perfil de un usuario:

https://www.google.com/s2/photos/profile/{user_id}
https://plus.google.com/s2/photos/profile/{user_id}
https://profiles.google.com/s2/photos/profile/{user_id}

Redirigen a la misma url de imagen que obtienes de la API de Google, un enlace feo como
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg

Lo más simple es usar directamente como fuente de imagen:

<img src="https://www.google.com/s2/photos/profile/{user_id}">

De lo contrario, para obtener exactamente la misma url de una API de Google llamada puede leer encabezados de imagen,
por ejemplo en PHP:

$headers = get_headers("https://www.google.com/s2/photos/profile/{user_id}", 1);
echo "<img src=$headers[Location]>";

Como se describe en el artículo Obtener la imagen de perfil de Google Plus usando PHP.

 47
Author: Salvador,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-23 16:27:45

Enfoque 1: (ya no funciona)

https://plus.google.com/s2/photos/profile/<user_id>?sz=<your_desired_size>

Enfoque 2: (cada solicitud cuenta en sus límites de tasa de api, que es de 10k solicitudes por día gratis)

https://www.googleapis.com/plus/v1/people/<user_id>?fields=image&key={YOUR_API_KEY}

Con el siguiente formato de respuesta:

{ "image": { "url": "lh5.googleusercontent.com/-keLR5zGxWOg/.../photo.jpg?sz=50"; } }

Enfoque 3: (no requiere clave api)

http://picasaweb.google.com/data/entry/api/user/<user_id>?alt=json

En la respuesta json se obtiene una propiedad llamada "gphoto thumbn thumbnail", que contiene la url de la imagen de perfil como la siguiente:

http://lh6.ggpht.com/-btLsReiDeF0/AAAAAAAAAAI/AAAAAAAAAAA/GXBpycNk984/s64-c/filename.jpg

Puede notar en la url la parte " s64-c" lo que significa que el tamaño de la imagen es de 64, he intentado usar otros valores como "s100-c" y funcionaron. También si elimina la parte" s64-c "y anexa la"?sz = 100 " parámetro, que también funcionará a partir de ahora. Aunque esta no es una muy buena manera de obtener la foto de perfil de un usuario de gplus, pero la ventaja es que no requiere ninguna clave api.

 25
Author: Masum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-28 08:05:07

Google, no se necesita API:

$data = file_get_contents('http://picasaweb.google.com/data/entry/api/user/<USER_ID>?alt=json');
$d = json_decode($data);
$avatar = $d->{'entry'}->{'gphoto$thumbnail'}->{'$t'};

/ / Ejemplo de salida: https://lh3.googleusercontent.com/-2N6fRg5OFbM/AAAAAAAAAAI/AAAAAAAAADE/2-RmpExH6iU/s64-c/photo.jpg

CAMBIAR: el 64 en "s64" para el tamaño

 10
Author: Shawn Rebelo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-03 20:07:30

Si desea mostrar la imagen de perfil para el usuario actualmente conectado, ni siquiera necesita conocer el {user_id}. Basta con usar https://plus.google.com/s2/photos/profile/me.

 5
Author: Danny Ruijters,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-13 15:20:32

Puede obtener la URL de la imagen de perfil utilizando el personas.get método de la API de Google+. Eso requiere un viaje de ida y vuelta adicional, pero es la forma más confiable de obtener la imagen.

Técnicamente también puede usar la URL https://s2.googleusercontent.com/s2/photos/profile/{id}?sz={size} que luego redirigirá a la URL final. {id} es el ID de usuario de Google o uno de los viejos nombres de usuario de Google Profiles (todavía existen para los usuarios que los tenían, pero no creo que pueda crear nuevos más). {size} es el tamaño deseado de la foto en píxeles. Estoy casi seguro de que esto es no una característica documentada y soportada, por lo que no confiaría en ella para nada importante, ya que puede desaparecer en cualquier momento sin previo aviso. Pero para prototipos rápidos o pequeñas aplicaciones únicas, puede ser suficiente.

 3
Author: Will Norris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-15 16:29:12

Intentar acceder a la url /s2/profile/photo funciona para la mayoría de los usuarios, pero no para todos.

El único método de prueba completa es usar la API de Google+. No necesita autenticación de usuario para solicitar datos de perfil público, por lo que es un método bastante simple:

  1. Obtenga una clave API de Google + en https://cloud.google.com/console

  2. Haga una simple solicitud GET a: https://www.googleapis.com/plus/v1/people/ + ?key =

Tenga en cuenta el + antes del nombre de usuario. Si utiliza ID de usuario en su lugar (la cadena larga de dígitos), no necesita el +

  1. obtendrá una representación JSON muy completa de los datos del perfil que incluye: "image": {"url": " https://lh4.googleusercontent.com/..... el resto de la url de la imagen...."}
 2
Author: Erwan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-18 03:25:43

Intentó todo lo posible.. aquí está la pieza final del código de trabajo. Espero que ayude a alguien que lo está buscando.

    <?
$url='https://www.googleapis.com/plus/v1/people/116599978027440206136?fields=image%2Furl&key=MY_API_KEY&fields=image';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$d = json_decode($response);
$avatar_url = $d->{'image'}->{'url'};
echo $avatar_url;
?>
 0
Author: suraj jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-15 11:18:59

Respuesta simple: No

Tendrá que consultar la API de person y tomar la imagen de perfil .url datos para obtener la foto. AFAIK no hay un formato predeterminado para esa url que contiene el ID de usuario.

 -5
Author: Kolja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-03 12:36:10