Node.js 无法同时使用passport Google和passport Facebook进行身份验证
我需要用google和facebook令牌验证请求。我正在使用护照和图书馆 请求来自的客户端是iOS和Android。到目前为止,我只有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
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);
}
));