2017-08-09 5 views
0

Ich versuche, die Parameterwerte aus der Callback-URL der Fitbit-API zu erfassen.Ich kann die URL-Parameter nicht mit ExpressJS abfangen

Der Rückruf URL wie unten aussieht,

http://localhost:9000/callback#access_token= ******** & user_id = ******* & scope = Schlaf + Einstellungen + Ernährung + Bewegung + Sozial + + Herzfrequenz Profil + Gewicht + Standort & token_type = Bearer & expires_in = 30418415

ich habe in der fitbit API als http://localhost:9000/callback von Callback-URL angegeben.

Mein ExpressJS-Code ist wie folgt.

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}!`); 
}); 

Ich kann nicht herausfinden, wo das Problem liegt.

Antwort

1

das Symbol # in einer URL ist framgent Identifikator einzuführen. Ihre Callback-URL http://localhost:3000/callback#access_token=********&user_id=*******&scope=sleep+settings+nutrition+activity+social+heartrate+profile+weight+location&token_type=Bearer&expires_in=30418415 wird nur die http://localhost:3000/callback keine Parameter an Ihren Server senden. Sie können diese Parameter also nicht direkt auf Ihrem Server abrufen.

Allerdings gibt es eine Lösung für dieses Problem. Bitte beachten Sie diese answer.

0

req.param ('token') wird die Verwendung abgeschrieben den Wert req.params.token passieren direkt in die URL

, wenn Sie Sie req.params angeben Schlüssel params in der URL

verwenden
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); 
    }); 

, wenn Sie den Fang der Wert in der uRL wollen, bedeutet die Verwendung req.query statt req.params den Wert mit dem Schlüssel von req.q passieren sehr

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); 
}); 
Verwandte Themen