Привет и заранее спасибо.
Мы запускаем наше приложение Node.js / Express в App Engine, которое выполняет интерфейс React в качестве статических файлов.В какой-то момент пользователь может перенаправить к третьей стороне, чтобы пользователь мог войти и авторизовать некоторые из своих данных, которые управляются этой третьей стороной.Мы предоставляем URI перенаправления третьей стороне в качестве параметра в строке запроса, которая равна https://www.example.com/api/thirdparty/OAuthCallback.
Когда пользователь отправляет авторизацию на сторонней стороне, они должны быть перенаправлены на этот URI, которыйявляется конечной точкой API в нашем приложении, где мы обрабатываем результат, а затем в нашем бэкэнде мы перенаправляем пользователя на его панель мониторинга.Вместо этого пользователь перенаправляется на этот URI в браузере.
Мы знаем (мы думаем), что делаем маршрутизацию правильно, потому что мы можем достичь этой конечной точки из Почтальона и таким образом моделировать процесс.
Вопрос в том, почему это перенаправление идет на браузер, а не на наш сервер?
Ниже вы найдете точку входа нашего сервера (index.js) и маршрут, по которому мы ожидаем попасть (thirdparty.js)
index.js:
//index.js
import express from "express";
import thirdparty from "./routes/thirdparty";
import httpsRedirect from "./middlewares/https-redirect";
const app = express();
var httpsPort = app.get('https-port');
app.use(httpsRedirect({httpsPort: httpsPort}));
app.set('trust proxy', true);
app.use(bodyParser.json({limit: '50mb'}));
app.use(bodyParser.urlencoded({limit: '50mb', extended: true}));
app.use(express.static(path.join(__dirname, '../build')));
app.use("/api/thirdparty", thirdparty);
app.get("/*", (req, res, next) => {
console.log('new request from: '+req);
res.sendFile(path.join(__dirname, '../build', 'index.html'));
});
app.listen(8080, ()=>console.log('Listening on port 8080'));
thirdparty.js (маршрут):
// thirdparty.js
import express from "express";
const router = express.Router();
var oauth2 = require('./lib/OAuth2.0')();
router.get('/OAuthCallback', function (req, res) {
console.log("CODE--------------------------- : " + req.query.code);
var params = {
code: req.query.code,
redirect_uri: 'https://www.example.com/api/thirdparty/OAuthCallback'
}
oauth2.authCode.getOAuthToken(params, saveToken);
function saveToken(error, result) {
// do things with the result
res.redirect(process.env.HOST+"/dashboard");
}
});
export default router;