訪問Facebook生日,家鄉和其他數據與passportJS在節點我試圖添加OAuth2登錄到我的應用程序構建在Node/ExpressJS/MongoDB/PassportJS。在節點
我可以使用此方法成功登錄,但無法獲取某些信息。我已經能夠訪問的唯一的東西是email
,name
和fbId
字段 - 我目前無法訪問here的生日,喜歡,家鄉和其他信息。
我userSchema設置是這樣的:
var userSchema = new mongoose.Schema({
fbId: String,
name: String,
email: { type:String, lowercase: true },
gender: String,
birthday: String,
hometown: Object,
location: Object,
likes: Array
});
這是我的Express服務器上運行的代碼:
passport.use(new FacebookStrategy({
clientID: config.development.fb.appId,
clientSecret: config.development.fb.appSecret,
callbackURL: config.development.fb.url + 'fbauthed'
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
var query = User.findOne({ 'fbId': profile.id });
query.exec(function(err, oldUser) {
if (oldUser) {
console.log('Existing user: ' + oldUser.name + ' found and logged in!');
done(null, oldUser);
} else {
var newUser = new User();
newUser.fbId = profile.id;
newUser.name = profile.displayName;
newUser.email = profile.emails[0].value;
newUser.gender = profile.gender;
newUser.birthday = profile.birthday;
newUser.hometown = profile.hometown;
newUser.location = profile.location;
newUser.likes = profile.likes;
newUser.save(function(err) {
if (err) { return done(err); }
console.log('New user: ' + newUser.name + ' created and logged in!');
done(null, newUser);
});
}
});
});
}
));
app.get('/fbauth', passport.authenticate('facebook', { scope: 'email' }));
app.get('/fbauthed', passport.authenticate('facebook',{ failureRedirect: '/' }), function(req, res){}
當我嘗試登錄並試圖訪問這些屬性,我得到:
fbId: String, // Defined
name: String, // Defined
email: { type:String, lowercase: true }, // Defined
gender: String, // Defined
birthday: String, // UNDEFINED
hometown: Object, // UNDEFINED
location: Object, // UNDEFINED
likes: Array // UNDEFINED
我試圖訪問它們不正確?我在這裏做錯了什麼?