Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

266
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!