Google 使用 node.js 和 passport.js 的身份验证始终返回 401(未授权)

Google Authentication with node.js and passport.js always returning 401 (Unauthorized)

我正在尝试通过 Android 应用程序发送的 Google 令牌对用户进行身份验证。我正在使用 node.js 和护照。

var GoogleTokenStrategy = require('passport-google-id-token');
var passport = require('passport');
var User            = require('./models/usersModel.js');

module.exports = function(app) {

passport.use(new GoogleTokenStrategy({
        clientID: "here-is-my-client-id.apps.googleusercontent.com"
    },
    function(parsedToken, googleId, done) {

        User.findOrCreate({ googleId: googleId }, function (err, user) {
            if(err) {
                return done(err);
            }
            if(!user) {
                user = new User({
                    username: googleId
                });
                user.save(function(err) {
                   if(err) console.log(err);
                    return done(err, user);
                });
            } else {
                return done(err, user);
            }
        });
    }
));

app.post('/auth/google',
    passport.authenticate('google-id-token'),
    function (req, res) {
        res.send(req.user? 200 : 401);
    }
);
};

但是,我只不断收到 401 响应和 "Unauthorized" 消息。我仔细检查了我的 clientID,我还使用 https://www.googleapis.com/oauth2/v3/tokeninfo?id_token 来验证生成的令牌,一切似乎都正常。

更重要的是,昨天,当我进行第一次测试时,它成功了。今天,有了新的令牌,它就不会了。

我在这里错过了什么?

实际上这是我的错误,这里的解决方案很简单 - 我唯一要做的就是将 Content-Type header 设置为 application/json.

不同 header 或根本没有 header 导致 401 响应。