【发布时间】:2018-02-19 21:33:05
【问题描述】:
我正在使用Spotify Web Api Node 进行 api 调用。
我的问题是我在 getMe api 调用返回数据之前被重定向...
如何等待结果然后重定向?
抱歉,我是 NodeJS 和 Express 的新手。
var express = require('express');
var router = express.Router();
/* GET callback. */
router.get('/', function(req, res, next) {
console.log('callback worked!')
var code = req.query.code || null;
// var state = req.query.state || null;
// var storedState = req.cookies ? req.cookies[stateKey] : null;
req.app.settings.spotifyApi.authorizationCodeGrant(code)
.then(function(data) {
console.log('The token expires in ' + data.body['expires_in']);
console.log('The access token is ' + data.body['access_token']);
console.log('The refresh token is ' + data.body['refresh_token']);
// Set the access token on the API object to use it in later calls
req.app.settings.spotifyApi.setAccessToken(data.body['access_token']);
req.app.settings.spotifyApi.setRefreshToken(data.body['refresh_token']);
req.app.settings.spotifyApi.getMe().then(function(data) {
if (typeof req.session.user === 'undefined') {
req.session.user = {};
}
// never gets here
console.log(req.session.user);
req.session.user.display_name = data.body.display_name
req.session.user.email = data.body.email
req.session.user.id = data.body.id
}, function(err) {
console.log('Something went wrong!', err);
});
}, function(err) {
console.log('Something went wrong!', err);
});
res.redirect(302, '/');
});
module.exports = router;
【问题讨论】:
-
它首先重定向,因为您的 res.redirect 在您的回调之外。把你的 res.redirect 放在你的 getMe().then(...) 的最后,或者在你的最后一个函数(err)之后放另一个 .then() 并在那里做 res.redirect()