Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
Passport-Facebook no devuelve el correo electrónico del perfil

Estoy tratando de configurar la autenticación de Facebook usando el pasaporte de node.js. Cuando ejecuto la aplicación y voy a /auth/facebook, voy a una página de Facebook para dar permiso a Facebook para devolver mi correo electrónico. Aquí está mi código

Front-end.tsx

 <a href='http://localhost:3001/auth/facebook'> <FacebookButton>Signup with Facebook</FacebookButton> </a>

Backend.ts

 const { id, secret }: FACEBOOK_APP_SECRET = config.get('Facebook'); const FacebookStrategy = passportFacebook.Strategy; passport.use( new FacebookStrategy( { clientID: id, clientSecret: secret, callbackURL: 'http://localhost:3001/auth/facebook/callback', profileFields: ['id', 'displayName', 'link', 'email'], }, function (accessToken, refreshToken, profile, cb, done) { console.log(profile); console.log(profile.email); userModel.findOne({ facebook: profile.id }, (err: NativeError, existingUser: User) => { if (err) { console.log(err); return done(err); } if (existingUser) { console.log(existingUser); return done(undefined, existingUser); } else { userModel.findOne({ email: profile._json.email }, (err: NativeError, existingEmailUser: User) => { if (err) { console.log(err); return done(err); } if (existingEmailUser) { done(err); } else { const user: any = new userModel(); user.email = profile._json.email; user.facebook = profile.id; user.save((err: Error) => { done(err, user); }); } }); } }); }, ), );

Ruta.ts

 this.router.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'public_profile'] })); this.router.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), function (req, res) { // Successful authentication, redirect home. res.redirect('/'); });

Así que ahora mismo, cuando imprimo el perfil, devolverá lo siguiente

 { access_token: 'xxxxxxxxxxxxxxxxxxx', token_type: 'bearer', expires_in: 5181888 }

y con profile.email , solo devolverá indefinido

Busqué por un tiempo, y otras personas están equivocadas porque no adjuntaron {scope: ['email', 'public_profile'] } en su código, lo cual hice, así que no sé cuál es el problema aquí, ¿por qué puede ¿No devuelvo el correo electrónico en el perfil?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda