Я разработал паспорт Google Oauth Strategy, который работает в разработке.Но, когда я развертываю его в heroku, он просто перенаправляет на URL вместо того, чтобы перейти на экран согласия Google.Я использую ответную реакцию в интерфейсе и правильно разместил все учетные данные и URL-адреса для обратных вызовов в консоли разработчиков Google.
Вот код для стратегии Google
passport.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id).then(user => {
done(null, user);
});
});
passport.use(
new GoogleStrategy(
{
// Options for Google Strategy
callbackURL: '/auth/google/redirect',
clientID: google.clientID,
clientSecret: google.clientSecret,
proxy: true
},
(accessToken, refreshToken, profile, done) => {
// Passport callback for Google
User.findOne({ googleID: profile.id }).then(user => {
if (user) {
// User already exist
done(null, user);
} else {
// Create a new user
const user = new User({
name: profile.displayName,
googleID: profile.id,
email: profile.emails[0].value,
avatar: profile.photos[0].value.substring(0, profile.photos[0].value.indexOf('?'))
});
user.save().then(newUser => {
done(null, newUser);
});
}
});
}
)
);
Вот маршруты авторизации
// Route - /auth/google
// Authenticates the user with Google
router.get(
'/google',
passport.authenticate('google', {
scope: [
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/userinfo.email'
]
}),
(req, res) => {
console.log('Auth Route');
}
);
// Route - /auth/google/redirect
// Redirect after Google login
router.get('/google/redirect', passport.authenticate('google'), (req, res) => {
res.redirect('/');
});
И я использую этот тег ссылки для вызова конечной точки
<a href={GOOGLE_LOGIN}>
<button className="btn btn--social btn--google">
<img src={Google} alt="Google Logo" /> Sign In with Google
</button>
</a>
Переменная GOOGLE_LOGIN выглядит следующим образом
const GOOGLE_LOGIN = process.env.NODE_ENV === 'production' ? '/auth/google' : 'http://localhost:5000/auth/google';
Когда я в разработке, URL-адрес правильно перенаправляет на экран согласия.Но после развертывания на heroku он просто перенаправляет на https://<URL>/auth/google
вместо перехода на экран согласия.Я попытался console.log
в конечной точке, но ничего не вошло. Кто-нибудь знает, как решить эту проблему?