【问题标题】:How to receive query in node js如何在节点js中接收查询
【发布时间】:2019-06-05 15:34:45
【问题描述】:

通过节点中的 spotify web api 授权后,我重定向到另一个带有 url 的页面:http://localhost:8888/homepage#access_token=.... 所以我想获取该页面上的访问令牌并获取数据,但是当我使用 req.query 时,我收到一个空对象。有什么不对?如何获得该访问令牌?

request.post(authOptions, (error, response, body) => {
    if (!error && response.statusCode === 200) {
      const access_token = body.access_token;
      const refresh_token = body.refresh_token;

      const options = {
        url: "https://api.spotify.com/v1/me",
        headers: { Authorization: `Bearer ${access_token}` },
        json: true
      };

      request.get(options, (error, response, body) => {
        console.log(body);
      });

      res.redirect(
        "/homepage#" +
          querystring.stringify({
            access_token: access_token,
            refresh_token: refresh_token
          })
      );
const express = require("express");
const router = express.Router();


router.get("/", (req, res) => {
  res.render("index/welcome");
});

router.get("/homepage", (req, res) => {
  res.render("index/homepage");
  console.log(req.query);
});

module.exports = router;


【问题讨论】:

    标签: node.js


    【解决方案1】:

    您通过片段而不是查询参数传递令牌,不是吗?

    const url = require('url'); 
    res.redirect(url.format({
       pathname:"/homepage",
       query: {
          "access_token": access_token,
          "refresh_token": refresh_token
        }
     }));
    

    使用片段仅用于客户端处理,它永远不应到达服务器。

    【讨论】:

    • 它有效,谢谢))但我不明白,你能解释一下吗?
    • 片段在# 之后传递,仅用于将内容传递给客户端应用程序(例如,通过回调 URL 将访问令牌传递给 Angular 前端的常用方法)。它不会以任何方式传递给服务器(比如传递给你的节点应用程序,或者在这种情况下是 express 框架)。另一方面,查询参数通过? 附加,可以在后端使用。
    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    相关资源
    最近更新 更多