第三方重定向到浏览器,而不是后端

时间:2018-09-29 22:02:42

标签: node.js google-app-engine

你好,谢谢你。

我们正在App Engine中运行Node.js / Express应用程序,该应用程序将React前端用作静态文件。某一时刻,用户能够重定向到第三方,以便用户可以登录并授权由该第三方管理的某些数据。我们将重定向URI作为查询字符串中的参数提供给第三方https://www.example.com/api/thirdparty/OAuthCallback

当用户在第三方上提交授权时,应将其重定向到该URI,该URI是我们处理结果的应用程序中的API端点,然后在后端中,将用户重定向到其仪表板。而是在浏览器中将用户重定向到该URI。

我们知道(我们认为)我们正确地进行了路由,因为我们能够从Postman到达终点并以此方式进行仿真。

问题是,为什么此重定向将转到浏览器而不是后端?

在下面,您会找到我们的服务器入口点(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;

0 个答案:

没有答案