javascript - 无法使用 express 和 app.get 访问 /playlists
问题描述
我正在尝试访问 app.get('/playlists') 但它不断出现 404 状态代码错误,并且浏览器显示 cannot GET /playlists
我不确定我在做什么,这是无法访问的代码:
var express = require('express'); // Express web server framework
var stateKey = 'spotify_auth_state';
var app = express();
app.use(express.static(__dirname + '/public'))
.use(cors())
.use(cookieParser());
app.get('/callback', function(req, res) {
// your application requests refresh and access tokens
// after checking the state parameter
var code = req.query.code || null;
var state = req.query.state || null;
var storedState = req.cookies ? req.cookies[stateKey] : null;
if (state === null || state !== storedState) {
res.redirect('/#' +
querystring.stringify({
error: 'state_mismatch'
}));
} else {
res.clearCookie(stateKey);
var authOptions = {
url: 'https://accounts.spotify.com/api/token',
form: {
code: code,
redirect_uri: redirect_uri,
grant_type: 'authorization_code'
},
headers: {
'Authorization': 'Basic ' + (new Buffer(client_id + ':' +
client_secret).toString('base64')) }, json: true };
request.post(authOptions, function(error, response, body) {
if (!error && response.statusCode === 200) {
var access_token = body.access_token,
refresh_token = body.refresh_token;
var options = {
url: 'https://api.spotify.com/v1/me',
headers: { 'Authorization': 'Bearer ' + access_token },
json: true
};
// use the access token to access the Spotify Web API
request.get(options, function(error, response, body) {
console.log(body);
});
// we can also pass the token to the browser to make requests from there
res.redirect('/#' +
querystring.stringify({
access_token: access_token,
refresh_token: refresh_token
}));
} else {
res.redirect('/#' +
querystring.stringify({
error: 'invalid_token'
}));
}
});
}
});
app.get('/refresh_token', function(req, res) {
// requesting access token from refresh token
var refresh_token = req.query.refresh_token;
var authOptions = {
url: 'https://accounts.spotify.com/api/token',
headers: { 'Authorization': 'Basic ' + (new Buffer(client_id + ':' + client_secret).toString('base64')) },
form: {
grant_type: 'refresh_token',
refresh_token: refresh_token
},
json: true
};
request.post(authOptions, function(error, response, body) {
if (!error && response.statusCode === 200) {
var access_token = body.access_token;
res.send({
'access_token': access_token
});
}
});
app.get('/playlists', (req, res) => {
console.log(request.url);
response.send('Hello, /');
});
});
console.log('Listening on 8888');
app.listen(8888);
我不知道为什么这条路线行不通
解决方案
您的/playlists
端点是在端点内声明的/refresh_token
。将其移出应该可以。
推荐阅读
- r - 使用 str_replace 时转义括号的问题
- vue.js - Vue + Axios 与 sessionStorage
- java - Android Studio - 芯片的关闭图标不执行任何操作(Java)
- android - 从库 Kotlin Android 旋转图像方向
- java - Spring Boot Redis 将 POJO 列表存储为值
- java - 如何在专用网络中部署 Java Web 服务
- javascript - 刷新页面后,其内容消失并出现错误
- c - 插入时根节点自动重置为空
- json - JsonSerializer:如何在 json 中创建列表而不涉及法式大括号中的元素?
- javascript - 有没有办法让 node.js 中的应用程序知道计算机有多少内存?