Passport-Google-OAuth回调无法正常工作

时间:2014-10-06 15:03:53

标签: javascript node.js passport.js

我使用passport-google-oauth ...

获得以下节点代码
app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email'] }));

app.get('/auth/google/callback', function(req,res) {
    console.log("callback");
    passport.authenticate('google', {
                successRedirect : '/signin',
                failureRedirect : '/signin'
    });
});

和...

passport.serializeUser(function(user, done) {
    console.log("ser");
    done(null, user.id);
});

passport.deserializeUser(function(id, done) {
    console.log("des");
    User.findById(id, function(err, user) {
        done(err, user);
    });
});

passport.use(new GoogleStrategy({

    clientID        : 'id',
    clientSecret    : 'key',
    callbackURL     : 'http://host/auth/google/callback',
},
function(token, rtoken, profile, done) {
   console.log("proc");
   console.log(profile);
   done(null, profile);
}));

问题是,回调被调用但没有其他事情发生。处理功能永远不会发生。回调最终超时。我出错的任何想法?

2 个答案:

答案 0 :(得分:1)

我刚刚发现passport-google-oauth包导出以下内容:

exports.Strategy =
exports.OAuthStrategy = OAuthStrategy;
exports.OAuth2Strategy = OAuth2Strategy;

这意味着"默认" (即策略)根本不是oauth2 ...所以你最好明确地使用OAuth2Strategy。它对我有用。花了我几个小时才发现这是问题...

答案 1 :(得分:0)

您没有使用" passport.authenticate(' google')"第二条路线中的中间件' / auth / google / callback'。

你的第二条路线应该是:



app.get( '/auth/google/callback', 
    	passport.authenticate( 'google', { 
    		successRedirect: '/',
    		failureRedirect: '/login'
}));