Я знаю, что этот вопрос был задан и получен ответ, но я пытался следовать тому, что другие люди предложили в ответе, и все еще не повезло!Это действительно расстраивает.
У меня есть кнопка для отправки запроса в google oauth 2.0 с помощью passport.js для входа, в localhost все выглядит нормально, но когда я развернул в Heroku, кнопка не перенаправляет пользователя на страницу входа в Google,но URL-адрес указан на /auth/google.
Я знаю, что Heroku ожидает http, а не https, и Google ожидает https, но я не знаю, почему страница все равно будет такой же, когда я нажимаюbutton.
Вот кнопка:
<div className="login-image-container">
<Thumbnail href="/auth/google" src={googleSignUpImg} bsClass="login-image" />
</div>
authRoutes:
const passport = require('passport');
module.exports = (app) => {
app.get('/auth/google', passport.authenticate('google', {
scope: ['profile', 'email']
})
);
app.get('/auth/google/callback', passport.authenticate('google'),
(req, res) => {
res.redirect('/');
}
);
};
passport.js:
passport.use(new GoogleStrategy({
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: keys.absoluteURI + '/auth/google/callback',
proxy: true
})
Я ставлю absoluteURI как absoluteURI: 'http://myHerokuUrl.herokuapp.com' примерно так:
module.exports = {
googleClientID: process.env.GOOGLE_CLIENT_ID,
googleClientSecret: process.env.GOOGLE_SECRET_ID,
cookieKey: process.env.COOKIE_KEY,
absoluteURI: 'http://myHerokuUrl.herokuapp.com'
};
Странно, если я пойду к http://myHerokuUrl.herokuapp.com,, все будет хорошо.Таким образом, я подумал, что, может быть, я смогу заставить веб-приложение выполнить https: // с http: //, но это не работает.
Я поставил http://myHerokuUrl.herokuapp.com и https://myHerokuUrl.herokuapp.com
на Авторизованные источники JavaScript в API консоли Google, и я поставил http://myHerokuUrl.herokuapp.com/auth/google/callback и https://myHerokuUrl.herokuapp.com/auth/google/callback на Авторизованные URI перенаправления , но он все еще не работает.
Любая помощь, я был бы признателен!