代码之家  ›  专栏  ›  技术社区  ›  kokilayaa

无法使用ExpressJS捕获URL参数

  •  1
  • kokilayaa  · 技术社区  · 7 年前

    我试图从Fitbit API的回调URL中捕获参数值。

    回调URL如下所示,

    http://localhost:9000/callback#access_token= ********&用户id=*******&范围=睡眠+设置+营养+活动+社交+心率+个人资料+体重+位置;令牌类型=承载(&U);expires\u in=30418415

    http://localhost:9000/callback .

    const express = require('express');
    const morgan = require('morgan');
    const path = require('path');
    
    const app = express();
    
    
    app.use(morgan(':remote-addr - :remote-user [:date[clf]] ":method :url HTTP/:http-version" :status :res[content-length] :response-time ms'));
    
    
    app.use(express.static(path.resolve(__dirname, '..', 'build')));
    
    
    app.get('*', (req, res) => {
        res.sendFile(path.resolve(__dirname, '..', 'build', 'index.html'));
    });
    
    const PORT = process.env.PORT || 9000;
    
    app.get('/callback', function(req, res) {
        var access_token = req.param('access_token') || null;
        var user_id = req.param('user_id') || null;
    
        res.send(access_token + ' ' + user_id);
    });
    
    app.listen(PORT, () => {
        console.log(`App listening on port ${PORT}!`);
    });
    

    我想不出问题出在哪里。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Tolsee    7 年前

    framgent标识符 http://localhost:3000/callback#access_token=********&user_id=*******&scope=sleep+settings+nutrition+activity+social+heartrate+profile+weight+location&token_type=Bearer&expires_in=30418415 只会得到 http://localhost:3000/callback

    然而,有解决方案。请参考此 answer .

        2
  •  0
  •   Muthukumar Helius    7 年前

    要求。param(“token”)是折旧后的use req.params。令牌将值直接传递到url

    如果您正在使用req。参数指定url中的键参数

       app.get('/callback/:access_token/:user_id', function(req, res) {
       //url ==> localhost:9000/callback/1233/123
        var access_token = req.params.access_token || null;
            var user_id = req.params.user_id || null;
               console.log(req.params)
            res.send(access_token + ' ' + user_id);
        });
    

    app.get('/callback',function(req, res) {
        var access_token = req.query.access_token || null;
        var user_id = req.query.user_id || null;
        console.log(req.query);
        res.send(access_token + ' ' + user_id);
    });