javascript - Passport-Google-OAuth 回调不起作用

标签 javascript node.js passport.js

我有以下使用 passport-google-oauth 的 Node 代码...

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);
}));

问题是,回调被调用,但没有其他 react 。处理功能永远不会命中。回调最终超时。有什么想法我哪里出错了吗?

最佳答案

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

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

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

关于javascript - Passport-Google-OAuth 回调不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26219121/

相关文章:

javascript - NodeJs :- Getting "missing credentials" error while using local passport

javascript - 如何打开 div 并使消息可读?

javascript - onclose/onunload 在新窗口 (window.open) 中用于外部 url

node.js - 如何使用 Sailsjs 创建 sitemap.xml

javascript - 在 Node.js 中发出请求时提示输入要使用的 URL

node.js - 使用 Node/express 和 Passport.js 无法登录并且没有错误消息

javascript - 如何加载js文件并动态应用于div?

javascript - 保持正确的样式类

node.js - 如何检测来自同一用户的多个 socket.io 连接

javascript - Express4.js - 仅当有事件的 Passport.js session 时才路由