tutorial password nodejs node management javascript node.js passport.js passport-facebook

javascript - password - passport js tutorial



La autenticación de Passport-Facebook no proporciona correo electrónico para todas las cuentas de Facebook (5)

Asegúrate de que estas dos cosas estén en tu código:

passport.use(new FacebookStrategy({ clientID: ''CLIENT_ID'', clientSecret: ''CLIENT_SECRET'', callbackURL: "http://www.example.com/auth/facebook/callback" passReqToCallback : true, profileFields: [''id'', ''emails'', ''name''] //This },

y esto:

app.get(''/connect/facebook'', passport.authorize(''facebook'', { scope : [''email''] }));

Esto le da acceso a lo siguiente:

  • Perfil Id
  • profile.name.givenName
  • profile.name.familyName
  • perfil.emails

El último es una matriz, así que use profile.emails[0].value para obtener la primera dirección de correo electrónico del usuario.

Como señaló shamim reza , es posible que desee comprobar si profile.emails !== undefined porque la propiedad solo existe si el usuario tiene al menos una dirección de correo electrónico verificada.

Estoy usando la autenticación Passport-Facebook .

passport.use(new FacebookStrategy({ clientID: ''CLIENT_ID'', clientSecret: ''CLIENT_SECRET'', callbackURL: "http://www.example.com/auth/facebook/callback" }, function (accessToken, refreshToken, profile, done) { process.nextTick(function () { console.log(profile) }); } ));

Para algunas de las cuentas de Facebook no obtengo el email_id e incluso lo intenté usando una variable de ámbito como la siguiente, pero aún así no puedo obtener el email_id.

profileUrl: "" y ProfileFields: ['''', '''']



Me gustaría agregar más información aquí.

Al agregar profileFields: [''emails''] al crear FacebookStrategy y passport.authorize(''facebook'', { scope : [''email''] }) resuelve el problema para la mayoría de los usuarios.

Hay otras razones posibles por las que no recibirá el correo electrónico del usuario después de la autenticación.

  • Sin dirección de correo electrónico en la cuenta
  • No hay una dirección de correo electrónico confirmada en la cuenta
  • No hay una dirección de correo electrónico verificada en la cuenta
  • El usuario ingresó un punto de control de seguridad que requirió que reconfirmaran su dirección de correo electrónico y aún no lo han hecho.
  • La dirección de correo electrónico del usuario es inalcanzable

Debe asegurarse de que su usuario no tenga ninguno de los problemas enumerados anteriormente. se puede encontrar más información https://developers.facebook.com/bugs/1802930019968631/



passport.use(new FacebookStrategy({ clientID: ''CLIENT_ID'', clientSecret: ''CLIENT_SECRET'', callbackURL: "http://www.example.com/auth/facebook/callback" }, function (accessToken, refreshToken, profile, done) { process.nextTick(function () { console.log(profile) }); } ));