【发布时间】:2012-09-25 21:27:46
【问题描述】:
似乎一切正常。对Parse.com 的请求检查用户是否存在并创建或检索用户。
我有两个主要问题。首先,当调用deserializeUser 函数时,它会返回20 个相同的用户,而findUser 函数应该返回这20 个用户。
另外,我无法访问req.user
passport.serializeUser(function(user, done) {
done(null, user.objectId);
});
passport.deserializeUser(function(uid, done) {
console.log(uid)
// This outputs the ObjectId 20 TIMES!! ??
Parse.findUser(uid,function(error,user){
done(null, user);
})
});
// CONFIGURATION
app.configure(function() {
app.use(express.bodyParser()); //read
app.use(express.cookieParser()); //read
app.use(express.session({ secret: process.env.SESSION_SECRET || 'abcde' }));
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
app.use(express.static(__dirname + '/static'))
});
passport.use(new FacebookStrategy({
clientID: process.env.FACEBOOK_APP_ID || 'app_id',
clientSecret: process.env.FACEBOOK_SECRET || 'fb_secret',
callbackURL: "http://localhost:5000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {
process.nextTick(function() {
_parse.user(accessToken, profile,function(parseUser){
//this returns the user.....
return done(null, parseUser);
})
})
})
)
app.get('/auth/facebook',
passport.authenticate('facebook',{scope:'email'}),
function(req, res){
// The request will be redirected to Facebook ....
});
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { failureRedirect: '/login' }),
function(req, res) {
console.log(req.user)
// this works! ...
res.redirect('/browse');
});
app.get('/browse',function(req,res){
console.log(req.user)
// this is works too ...
res.render('browse.jade',{title:'Browse',classes:'browse'})
})
app.get('/logout', function(req, res){
req.logout();
res.redirect('/login');
});
【问题讨论】:
-
您使用的是什么 Parse 库?这看起来不像官方 Parse JavaScript SDK。
-
javascript SDK 是针对客户端的,我没有在服务器上尝试过,但我很确定它不起作用(如果我错了,请有人纠正我)...我'正在使用 this module 成功地从 Parse 返回用户。
-
您没有使用 Parse.com parse.com/docs/downloads 提供的官方 JavaScript API 有什么特别的原因吗?
-
我正在使用文档中的this node package。
Parse.getUser其实是Parse.findUser,不知道为什么我现在改了……我更新了。
标签: node.js facebook parse-platform passport.js