node.js - home - node js guide
Pasaporte-Facebook no proporciona correo electrónico incluso si está dentro del alcance (2)
Desde el gráfico APIv2.4 de Facebook, debemos especificar explícitamente los campos para obtener.
Entonces, podemos escribir como:
passport.use(new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL,
profileFields: [''id'', ''email'', ''gender'', ''link'', ''locale'', ''name'', ''timezone'', ''updated_time'', ''verified''],
},
En mi solicitud, registro la estrategia de facebook de la siguiente manera: Pero el perfil devuelto no contiene el campo de correo electrónico ...
passport.use(new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL,
passReqToCallback: true
},
function(req, accessToken, refreshToken, profile, done) {
// No email in the following colsole.log
console.log(JSON.stringify(profile));
}));
El obtener es el siguiente:
app.get(''/oauth/facebook'', passport.authenticate(''facebook'', {
failureRedirect: ''/login'',
scope:[''email'']
}));
(Así que estoy usando el alcance como se dice aquí: Passport-Facebook no recibe correo electrónico )
En la página de inicio de sesión de FB, incluso pedí el correo electrónico y lo proporciono:
Cualquier ayuda es muy valiosa!
Usted tiene la parte de devolución de llamada del código, ¿verdad ?:
app.get(''/oauth/facebook/callback'', passport.authenticate(''facebook'', {
failureRedirect: ''/login'',
successRedirect: ''/'',
scope:[''email'']
}));
Y, sí, de hecho, esto debe hacerse con el scope:[''email'']
, según las instrucciones de su enlace y este también aquí .