我使用passport oauth创建了一个google用户会话,使用以下路线:
nodeApp.get('/api/google', googlepassport.authenticate('google', { session: true,scope: ['profile', 'email'] })
nodeApp.get('/auth/google/callback',
googlepassport.authenticate('google',
{ // successRedirect: '/',
// failureRedirect: '/login-error',
}))
在passport.serializeuser
的后端,我可以检索详细信息,但是我想将这些详细信息发送给客户端控制器。
我尝试使用Http.get
,但这对谷歌oauth不起作用,因为我遇到跨域错误。我是nodejs的新手,所以请建议最好的方法来向客户端控制器发送用户详细信息。
谷歌策略
googlepassport.use(new GoogleStrategy({
clientID: "add",
clientSecret: "",
callbackURL: "---",
// passReqToCallback: true
},
function(req, token, refreshToken, profile, done) {
// make the code asynchronous
// console.log("test google");
// User.findOne won't fire until we have all our data back from Google
process.nextTick(function() {
console.log("test google");
//console.log(profile);
var userMap = {};
userMap['mail'] = profile.emails[0].value;
userMap['name'] = profile.displayName;
// console.log(JSON.stringify(userMap));
// req.user = req.session.googlepassport.user;
//console.log(req.session);
//req.session.user = req.session.googlepassport.user;
return done(null, userMap);
})
// done(null,null);
}));
googlepassport.serializeUser(function(user, done) {
console.log('Serializing');
console.log(user);
done(null, user);
});
googlepassport.deserializeUser(function(userMap, done) {
done(null, userMap);
});
我想将userMap
发送到client
,此处路由是通过href
完成的,以避免cross-domain
错误,如果我在button
上使用它{1}}点击。