Tu backend ahora extrae, guarda y devuelve automáticamente la foto de perfil de Google OAuth.
- El middleware
googleAuth.jsdecodifica el token de Google - Extrae automáticamente el campo
picture(URL de la foto) - Logs de depuración muestran la foto extraída
- Usuario NUEVO: Se guarda la foto de Google directamente en
foto_perfil_url - Usuario EXISTENTE sin foto: Se actualiza
foto_perfil_urlcon la foto de Google - Usuario EXISTENTE con foto: Se mantiene la foto actual
- El endpoint
/usuarios/auth/googleincluyefoto_perfil_urlen la respuesta - El JWT generado incluye la foto de perfil
- Se incluye el campo
emailen la respuesta
{
"token": "jwt_con_foto_incluida",
"nombre": "Juan",
"apellido_paterno": "Pérez",
"apellido_materno": "",
"foto_perfil_url": "https://lh3.googleusercontent.com/a/ACg8ocJ...",
"email": "usuario@gmail.com",
"rol_id": 1,
"loginMethod": "google",
"newUser": true // o accountLinked: true
}- ✅ Extrae campo
picturedel token de Google - ✅ Logs de depuración para mostrar foto extraída
- ✅ Método
actualizarFotoPerfilGoogle()para actualizar foto - ✅ Campo
foto_perfil_urlincluido en consultas
- ✅ Lógica para usuarios nuevos: guarda foto de Google
- ✅ Lógica para usuarios existentes sin foto: actualiza con foto de Google
- ✅ JWT incluye
foto_perfil_url - ✅ Respuesta incluye
foto_perfil_urlyemail
✅ test_foto_perfil_logic.js - Lógica de base de datos ✅ test_endpoint_foto_final.js - Endpoint funcionando ✅ Validación de estructura - Response correcta
Tu frontend debe enviar exactamente esto:
fetch('http://localhost:4000/usuarios/auth/google', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
googleToken: token_jwt_real_de_google
})
})
.then(response => response.json())
.then(data => {
// data.foto_perfil_url contiene la URL de la foto de Google
// data.token contiene el JWT de tu sistema con la foto incluida
console.log('Foto de perfil:', data.foto_perfil_url);
localStorage.setItem('authToken', data.token);
});- ✅ Usuario nuevo con foto de Google → Guarda foto y la devuelve
- ✅ Usuario existente sin foto → Actualiza con foto de Google
- ✅ Usuario existente con foto → Mantiene foto actual
- ✅ Vinculación de cuenta → Actualiza foto si no tenía
- ✅ JWT incluye foto → Para uso en futuras requests
- ✅ Response incluye email → Para mostrar en UI
Tu backend está 100% listo para recibir tokens de Google desde el frontend y automáticamente extraer, guardar y devolver la foto de perfil del usuario.
El siguiente paso es implementar esto en tu frontend real.