AMT*_*AMT 47 javascript node.js passport-facebook passport.js
我正在使用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) }); } ));
对于一些Facebook帐户,我没有收到email_id,我甚至尝试使用范围变量,如下所示,但我仍然无法获得email_id.
profileUrl:""和ProfileFields:['','']
For*_*vin 107
确保代码中包含以下两项内容:
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
},
Run Code Online (Sandbox Code Playgroud)
还有这个:
app.get('/connect/facebook', passport.authorize('facebook', { scope : ['email'] }));
Run Code Online (Sandbox Code Playgroud)
这使您可以访问以下内容:
最后一个是数组,因此用于profile.emails[0].value
获取用户的第一个电子邮件地址.
正如所shamim reza
指出的,您可能想要检查是否profile.emails !== undefined
因为该属性仅在用户具有至少一个经过验证的电子邮件地址时才存在.
sif*_*eme 26
当您进行身份验证时,请使用与此类似的内容.进行身份验证时,您需要在范围中添加"email".
app.get('/auth/facebook',
passport.authenticate('facebook', { scope: ['email']}),
function(req, res){
});
Run Code Online (Sandbox Code Playgroud)
这对我有用.
以下是一些帮助我的链接.
https://github.com/jaredhanson/passport-facebook/issues/11 https://github.com/jaredhanson/passport-facebook#how-do-i-ask-a-user-for-additional-permissions
我想在这里添加更多信息.
在profileFields: ['emails']
创建FacebookStrategy时添加并passport.authorize('facebook', { scope : ['email'] })
解决大多数用户的问题.
还有其他可能的原因导致您在身份验证后无法收到用户的电子邮件.
您需要确保您的用户没有上面列出的任何问题.可以找到更多信息https://developers.facebook.com/bugs/1802930019968631/
归档时间: |
|
查看次数: |
20771 次 |
最近记录: |