Node.js 无法同时使用passport Google和passport Facebook进行身份验证

Node.js 无法同时使用passport Google和passport Facebook进行身份验证,node.js,oauth,google-oauth,passport.js,facebook-oauth,Node.js,Oauth,Google Oauth,Passport.js,Facebook Oauth,我需要用google和facebook令牌验证请求。我正在使用护照和图书馆 请求来自的客户端是iOS和Android。到目前为止,我只有Facebook身份验证,并且工作正常: const FacebookTokenStrategy = require('passport-facebook-token'); const passport = require('passport') const { facebook_client_id, facebook_client_secret } = req

我需要用google和facebook令牌验证请求。我正在使用护照和图书馆

请求来自的客户端是iOS和Android。到目前为止,我只有Facebook身份验证,并且工作正常:

const FacebookTokenStrategy = require('passport-facebook-token');
const passport = require('passport')
const { facebook_client_id, facebook_client_secret } = require('../config')

    passport.use(new FacebookTokenStrategy({
        clientID: facebook_client_id,
        clientSecret: facebook_client_secret,
    }, function (accessToken, refreshToken, profile, done) {
        done(null, profile)
    }
    ));

The middleware:

    const passport = require('passport')
    require('../config/passport-facebook');
    require('../config/passport');
    
    const { INVALID_TOKEN, UNAUTHORIZED } = require('../config/constants')
    
    module.exports = (req, res, next) => {
        passport.authenticate(['jwt', 'facebook-token'], function (err, user, info) {
            console.log("ERR", err)
            if (err) {
                if (err.oauthError) {
                    res
                        .status(400)
                        .json({ message: INVALID_TOKEN, status: 400 })
                }
            } else if (!user) {
                res
                    .status(401)
                    .json({ message: UNAUTHORIZED, status: 401 })
            } else {
                req.user = user
                next()
    
            }
        })(req, res, next);
    }
当我尝试在中间件中添加google身份验证策略时,问题出现了: 因此,通过这种方式,我总是会得到以下错误:

'{"error":{"message":"Bad signature","type":"OAuthException","code":190,"fbtrace_id":"ARQrcaTLIYtkBIs4TIIl49p"}}' } }
如果我在数组中添加“GoogleToken”,则会出现此错误:(我尝试了数组中所有可能的订单)

重要的是,如果我不使用“谷歌代币”,比如:

module.exports = (req, res, next) => {
    passport.authenticate(['google-token'], function (err, user, info) {
        console.log("ERR", err)
        if (err) {
            if (err.oauthError) {
                res
                    .status(400)
                    .json({ message: INVALID_TOKEN, status: 400 })
            }
        } else if (!user) {
            res
                .status(401)
                .json({ message: UNAUTHORIZED, status: 401 })
        } else {
            req.user = user
            next()

        }
    })(req, res, next);
}
它工作正常

这是我的谷歌配置:

passport.use(new GoogleTokenStrategy({
    clientID: google_client_id,
    clientSecret: ''
},
    function (accessToken, refreshToken, profile, done) {
        return done(err, profile);
    }
));
passport.use(new GoogleTokenStrategy({
    clientID: google_client_id,
    clientSecret: ''
},
    function (accessToken, refreshToken, profile, done) {
        return done(err, profile);
    }
));