Nodejs TokenError:代码已被兑换

时间:2018-06-21 20:53:15

标签: node.js passport-google-oauth

我试图登录使用Google OAuth流的应用程序。我过去曾经通过

成功登录到该应用程序
localhost:5000/auth/google

当我选择我的电子邮件时,该过程仅挂起大约一分钟,然后我得到:

TokenError: Code was already redeemed.

发生在localhost:5000/auth/google/callback,我认为这可能不会有问题,因为它是下面authRoutes.js文件中的路由:

const passport = require('passport');

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

  app.get('/auth/google/callback', passport.authenticate('google'));

  app.get('/api/logout', (req, res) => {
    req.logout();
    // prove to whoever is
    // making request that
    // they are no longer signed in
    res.send(req.user);
  });

  app.get('/api/current_user', (req, res) => {
    res.send(req.user);
  });
};

我以为我会通过转到localhost:5000/api/current_user进行检查,该检查应该将用户的googleID_id呈现为对象,但是却出现空白屏幕,这意味着我无法成功登录。

我不确定这是怎么回事。

1 个答案:

答案 0 :(得分:0)

当您尝试在本地应用程序中浏览Google OAuth流并且它只是挂起时,这不是问题。您的问题是您没有运行MongoDB数据库,因此您的应用程序很难根据数据库中存储的内容来验证这是新用户还是旧用户登录。