Nodejs路由不会在Heroku上的生产上重定向

时间:2018-10-07 21:17:25

标签: node.js reactjs heroku

我知道已经提出并回答了这个问题,但是我尝试遵循其他人在回答中提出的建议,但仍然没有运气!真令人沮丧。

我有一个按钮将请求发送到带有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/callbackhttps://myHerokuUrl.herokuapp.com/auth/google/callback放在 授权的重定向URI ,但仍无法正常工作。

任何帮助,我将不胜感激!

0 个答案:

没有答案