使用google-oauth2将用户详细信息发送到护照身份验证中的控制器

时间:2017-01-22 13:26:38

标签: node.js oauth passport.js

我使用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}}点击。

0 个答案:

没有答案