Node + Express应用程序中的Passport + Google Token不断向Postman投掷“Unauthorized”,令牌很好并且手动验证

问题描述 投票:2回答:1

我有一个使用Node + Express + Passport构建的后端REST API,我正在尝试使用google访问令牌进行身份验证。我正在使用this strategy.

我已经查看了github上的软件包文档和问题,但没有解决问题的方法。

我已经验证了访问令牌:

https://www.googleapis.com/oauth2/v1/tokeninfo?idToken带有令牌令牌和带有访问令牌的https://www.googleapis.com/oauth2/v1/tokeninfo?acessToken,两者都有效,但都不起作用。我有双三重检查,我在后端使用正确的clientID和秘密,在前端我从中获取令牌。

这是相关的代码:

    app.use(passport.initialize());
    passport.use(
      new GoogleTokenStrategy(
        {
          clientID: config.get('google.clientID'),
          clientSecret: config.get('google.clientSecret')
        },
        function(accessToken, refreshToken, profile, done) {

console.log(accessToken, refreshToken, profile, done)

          User.findOrCreate({ googleId: profile.id }, function(err, user) {
            return done(err, user);
          });
        }
      )
    );

    app.use('/user', passport.authenticate('google-token'), userRoute);

我在顶部导入如下:

const passport = require('passport');
const GoogleTokenStrategy = require('passport-google-token').Strategy;

该应用程序不会抛出任何错误。

我添加了创建策略的console.log - 当我从邮递员开火时,没有记录。当我从一个角度前端射击时 - 它记录数据并且它正在发射。

node.js passport.js google-oauth2 passport-google-oauth2
1个回答
0
投票

在我的情况下,由于我甚至没有定义的User.findOrCreate逻辑,这被抛出。因此,Facebook令牌护照包会引发内部服务器错误,但谷歌会在没有消息的情况下无声地失败。

我将在开发过程中稍后定义我的findOrCreate逻辑。目前,这适用于测试:

  new GoogleTokenStrategy(
    {
      clientID: config.get('google.clientID'),
      clientSecret: config.get('google.clientSecret')
    },
    function(accessToken, refreshToken, profile, done) {
      return done(null, profile);
    }
  )
);
© www.soinside.com 2019 - 2024. All rights reserved.