我知道已经提出并回答了这个问题,但是我尝试遵循其他人在回答中提出的建议,但仍然没有运气!真令人沮丧。
我有一个按钮将请求发送到带有opassport.js的google oauth 2.0进行登录,在localhost中一切正常,但是当我部署到Heroku时,该按钮不会将用户重定向到google登录页面,但会重定向到url在/ auth / google上。
我知道Heroku期望使用http,而不是https,而google期望使用https,但是我不知道为什么单击按钮后页面仍然相同。
这里的按钮:
<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,就可以了。因此,我在想也许可以强制将Web应用程序从http://强制为https://,但这是行不通的。
我都放了http://myHerokuUrl.herokuapp.com
和https://myHerokuUrl.herokuapp.com
在Google控制台API中的授权的JavaScript起源上
然后将http://myHerokuUrl.herokuapp.com/auth/google/callback和https://myHerokuUrl.herokuapp.com/auth/google/callback放在
授权的重定向URI ,但仍无法正常工作。
任何帮助,我将不胜感激!