Cómo obtener URL de imagen de perfil de Google+ con user_id

Sé que muchas API de redes sociales proporcionan una forma de construir una url para la imagen de perfil de un usuario, usando 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 de otra forma para obtener la foto del usuario sin una llamada API?

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

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

Nueva forma de hacerlo es

URL de solicitud

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

Eso le dará a 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 de aquí

Para obtener más información, también puede consultar la pregunta que he respondido para el mismo tipo de problema. ¿Cómo puedo obtener la imagen del usuario a través del ID de usuario en Google plus?

Happy Coding !!

ACTUALIZACIÓN: El método a continuación NO FUNCIONA desde 2015

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

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

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

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

Uso con una etiqueta de imagen:

  

Espero que lo hagas funcionar!

ACTUALIZACIÓN: Google detuvo el soporte para este método, que ahora devuelve un error 404 (no encontrado) .


Todas estas URL traen 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} 

Redireccionan a la misma URL de imagen que obtienes de la API de Google, un vínculo feo como
lh6.googleusercontent.com/-x1W2-XNKA-A/AAAAAAAAAAI/AAAAAAAAAAA/ooSNulbLz8U/photo.jpg

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

  

De lo contrario, para obtener exactamente la misma URL de una llamada a la API de Google, puede leer encabezados de imágenes,
por ejemplo en PHP:

 $headers = get_headers("https://www.google.com/s2/photos/profile/{user_id}", 1); echo ""; 

como se describe en el artículo Obtener foto de perfil de Google Plus usando PHP .

Enfoque 1: (ya no funciona)

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

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

 https://www.googleapis.com/plus/v1/people/?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 de API)

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

en la respuesta json obtienes una propiedad llamada “gphoto $ thumbnail”, que contiene la URL de la foto de perfil como la siguiente:

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

Puede observar en la url la parte “s64-c” que significa que el tamaño de la imagen es 64, he intentado usar otros valores como “s100-c” y funcionó. Además, si elimina la parte “s64-c” y agrega el parámetro “? Sz = 100”, eso también funcionará a partir de ahora. Aunque esta no es una buena forma de obtener la imagen de perfil de un usuario gplus, la ventaja es que no requiere ninguna clave api.

Google, no se necesita API:

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

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

CAMBIO: el 64 en “s64” para el tamaño

Si desea mostrar la imagen de perfil para el usuario actualmente conectado, ni siquiera necesita saber el {user_id}. Simplemente usar https://plus.google.com/s2/photos/profile/me será suficiente.

Puede obtener la URL de la imagen de perfil con el método people.get de la API de Google+. Eso requiere un viaje redondo adicional, pero es la forma más confiable de obtener la imagen.

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 nombres de usuario antiguos de Google Profiles (todavía existen para los usuarios que los tuvieron, pero no creo que pueda crear otros nuevos). {size} es el tamaño deseado de la foto en píxeles. Estoy casi seguro de que esta no es una función documentada y compatible, 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.

intentar acceder al / s2 / perfil / url de la foto funciona para la mayoría de los usuarios, pero no para todos.

El único método de prueba completo 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. Realice una simple solicitud GET a: https://www.googleapis.com/plus/v1/people/+ ? Key =

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

  1. obtendrá una representación JSON muy completa de los datos de perfil que incluye: “imagen”: {“url”: ” https://lh4.googleusercontent.com/ ….. el rest de la URL de la imagen … “}

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

  {'image'}->{'url'}; echo $avatar_url; ?> 

Respuesta simple: no

Deberá consultar la persona API y tomar los datos del perfil image.url para obtener la foto. AFAIK no hay un formato predeterminado para esa url que contiene el ID de usuario.