我可以通过passport-facebook检索基本用户信息,按照以下代码并保存在mongodb中:
app.get("/auth/facebook", passport.authenticate("facebook", { scope : ["email", "publish_stream", "user_location", "user_hometown", "user_birthday", "read_friendlists"]}));
app.get("/auth/facebook/callback", passport.authenticate("facebook",{ successRedirect: '/', failureRedirect: '/'}));
var mongoose = require('mongoose'),
FacebookStrategy = require('passport-facebook').Strategy,
Users = mongoose.model('Users');
module.exports = function (passport, config) {
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
Users.findOne({ _id: id }, function (err, user) {
done(err, user);
});
});
passport.use(new FacebookStrategy({
clientID: config.facebook.clientID,
clientSecret: config.facebook.clientSecret,
callbackURL: config.facebook.callbackURL
}, function(accessToken, refreshToken, profile, done) {
Users.findOrCreateFaceBookUser(profile, done);
}));};
Run Code Online (Sandbox Code Playgroud)
但是,我无法在"个人资料"中看到个人资料图片.
文档https://github.com/jaredhanson/passport-facebook说要检索我们需要传递profileFields的照片,如下所示.但是这样做,我能够看到照片网址,但却丢失了_json中包含的其他数据,例如profile._json.location.name.如何检索包含其他用户信息的照片?
passport.use(new FacebookStrategy({
// clientID, …Run Code Online (Sandbox Code Playgroud) 我很陌生,表达了一个小问题.其实我是SAP开发人员,但学习快递.
我在JADE中有很少的表单输入文本元素是动态生成的.动态生成的表单元素称为optiondes1,optiondes2,optiondes3等.现在,当我发布请求时,我可以在req.body中看到所有那些输入文本值.
如何从请求体(req.body)中提取或读取动态文本元素值.我正在使用身体解析器.同样,我还想从req.files中读取名为file1,file2等的动态文件元素.请指教.
for (var i = 0; i < numofoptions; i++){
var optcount = i + 1;
optdes = ('req.body.' + 'optiondes' + optcount);
// This prints req.body.optiondes1 as string, but I need the value of req.body.optiondes1
console.log(optdes);
optfile = 'file' + optcount;
origFileName = ('req.files.' + optfile + '.originalFilename');
console.log(origFileName);
};
Run Code Online (Sandbox Code Playgroud)