谷歌认证没有达到护照回拨

时间:2017-09-05 03:26:36

标签: node.js oauth-2.0 google-authentication passport.js

基于https://github.com/passport/express-4.x-facebook-example/blob/master/server.js,我尝试使用Passport和node.js实现基本的Google身份验证。

My Passport配置如下所示:

passport.use(new GoogleStrategy({
    clientID: GOOGLE_CLIENT_ID,
    clientSecret: GOOGLE_CLIENT_SECRET,
    callbackURL: "https://localhost:3000/auth/callback" // not sure if correct.
  },
  function(accessToken, refreshToken, profile, cb) {
    console.log("accessToken: " + accessToken);
    console.log("refreshToken: " + refreshToken);
    console.log("profile: " + profile);
    console.log("cb: " + cb);
    cb(accessToken, profile);
  }
));

我已经设置了以下GET路线:

app.get('/auth/',
  passport.authenticate('google', { scope: ['profile'] }));

app.get('/auth/callback', 
  passport.authenticate('google', { failureRedirect: '/login' }),
  function(req, res) {
    console.log("success");
    // Successful authentication, redirect home.
    res.redirect('/');
  });

当我尝试访问身份验证页面时,我获得了一个正常的Google登录屏幕,但在我登录后,我收到了net::ERR_CONNECTION_CLOSED消息。该网址看起来像https://localhost:3000/auth/callback?code=ACCESS_CODE,但不会导致重定向到/login(如果失败)或重定向到/,如果成功的话。

任何帮助表示赞赏!我对Passport和一般的oauth都很新。

1 个答案:

答案 0 :(得分:0)

根据passport oauth2 library documentation,护照中间件回调的第一个参数是错误。所以,你的代码:

cb(accessToken, profile)

被视为错误的 accessToken '错误'。这可能是一个问题。您需要将其更改为:

cb(null, profile)