gpt4 book ai didi

node.js - Passport Facebook 身份验证未提供电子邮件地址

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:49 24 4
gpt4 key购买 nike

我做了 Stackoverflow 中解释的所有方法,但没有成功

passport.use(new FacebookStrategy({
clientID: 'CLIENT ID',
clientSecret: 'CLIENT SECRET',
callbackURL: "/auth/facebook/callback",
profileFields:['id', 'emails', 'link', 'locale', 'name',
'timezone', 'updated_time', 'verified', 'displayName']
},
function(accessToken, refreshToken, profile, done) {
console.log(profile);
var authId = 'facebook:' + profile.id;
for(var i = 0; i < users.length; i++){
var user = users[i];
if(user.authId === authId){
return done(null, user);
}
}

var new_user = {
'authId':authId,
'displayName':profile.displayName
};
users.push(new_user);
done(null, new_user);
}
));

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

但是在我的控制台

 _json:
{ id: 'MY ID',
link: 'https://www.facebook.com/app_scoped_user_id/MY_ID/',
locale: 'ko_KR',
last_name: 'LAST_NAME',
first_name: 'FIRST_NAME',
timezone: 9,
updated_time: '2016-06-26T06:25:28+0000',
verified: true,
name: 'MY NAME' } }

没有电子邮件字段有什么问题?或者我的facebook账户授权有问题吗?

最佳答案

在 profileFields 对象中,使用“email”而不是“emails”。

profileFields:['id', 'emails', 'link', 'locale', 'name',
'timezone', 'updated_time', 'verified', 'displayName']

替换为

profileFields:['id', 'email', 'link', 'locale', 'name',
'timezone', 'updated_time', 'verified', 'displayName']

关于node.js - Passport Facebook 身份验证未提供电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com