0

我正在将一个站点从已失效的 OpenShift v2 转移到 AWS 上的 LightSail。我在 LightSail 上启动并运行了应用程序,并在localhost:3333外部转发。我可以使用site-url.com

但是,在尝试登录应用程序时(使用 Passport Facebook)。回调 url 设置为127.0.0.1,而不是白名单(facebook dev)www.site-url.com

https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%3A%2F%2F127.0.0.1%3A3333%2Fauth%2Fwww.site-url.com%2Fauth%2Ffacebook%2Fcallback&scope=email&client_id=XXX

相关登录代码:

const appUrl = "www.site-url.com";
const callbackURL = appUrl + "/auth/facebook/callback";
passport.use(new FacebookStrategy({
                clientID: clientID,
                clientSecret: clientSecret,
                callbackURL: callbackURL,
                profileFields: ['id', 'displayName', 'email']
        },

...

app.get('/auth/facebook',
        passport.authenticate('facebook', { scope: ['email'] }));

app.get('/auth/facebook/callback',
        passport.authenticate('facebook',{
          successRedirect: appUrl + '/profile',
          failureRedirect: appUrl + '/?login-failed'}
        ));

我添加了appUrl,试图通过服务器代码修复它。但是,我感觉 Apache 更适合解决这个问题。

我按照这些说明设置了代理,并尝试了所有变体127.x/site-url.com

ProxyPass / http://127.0.0.1:3333/
# ProxyPass / http://www.site-url.com/
ProxyPassReverse / http://127.0.0.1:3333/
# ProxyPassReverse / http://www.site-url.com/

有人有想法么?

4

1 回答 1

1

打开PreserveHost解决了这个问题,Facebook 现在收到了正确的回调 url

保留主机:

ProxyPreserveHost On
ProxyPass / http://127.0.0.1:3333/
ProxyPassReverse / http://127.0.0.1:3333/

阿帕奇配置:

vim /opt/bitnami/apache2/conf/bitnami/bitnami-apps-prefix.conf

附加:Include "/home/bitnami/conf/httpd-app.conf

使用 SSH 进程被杀死时启动应用程序screen以避免关闭。也许尝试nodemon 以获得弹性

谢谢,@DusanBajic!

于 2017-09-04T15:35:55.627 回答