Я пытаюсь использовать Passport-Google-Token стратегия для аутентификации пользователей, аналогичная стратегии Facebook, которая работает просто отлично, но по какой-то причине аутентификация Google, даже если кажется, что все параметры настроены правильно не возвращайте информацию и застряли на ней. Любой совет будет высоко оценен.
const GoogleTokenStrategy = require ('passport-google-token'). Strategy;
passport.use('googleToken', new GoogleTokenStrategy(
{
clientID: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET
}, function(accessToken, refreshToken, profile, done) {
console.log('profile google: ', profile);
const email = profile.email;
const name = profile.name;
const firstname = profile.given_name;
const lastname = profile.family_name;
User.findOne({ email: email }, function (err, user) {
if (err) { return done(err); }
// Return if user not found in database
if (!user) {
const newUser = new User({
_id: new mongoose.Types.ObjectId(),
name: name,
firstname: firstname,
lastname: lastname,
email: email
});
newUser.save()
.then(result => {
return done(null, newUser);
})
.catch(err => {
console.log(err);
return done(null, false, {
statusCode: 500,
message: 'Server error',
error: err.message
});
});
}
return done(null, user);
}).catch(err => {
console.log(err);
return done(null, false, {
statusCode: 500,
message: 'Server error',
error: err.message
});
});
}
));
exports.googleLogin = (req, res, next) => {
console.log('started google login');
return passport.authenticate(['googleToken'], function(error, user, info) {
var token;
if (err) {
return res.status(404).json({
statusCode: 404,
message: 'Auth failed',
error: err
});
}
if (info) {
return res.status(401).json({
statusCode: 401,
message: 'Auth failed',
error: info[0]
});
}
// If a user is found
if (user) {
token = user.generateJwt();
return res.status(200).json({
id: user._id,
name: user.name,
email: user.email,
token: token
});
} else {
const error = new Error("User not found");
return res.status(403).json({
statusCode: 403,
message: 'Auth failed',
error: error
});
}
})};
router.post('/googleLogin', controller.googleLogin);