首页 > 解决方案 > 无法使用 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);

我不知道为什么这条路线行不通

标签: javascriptnode.jsexpressspotify

解决方案


您的/playlists端点是在端点内声明的/refresh_token。将其移出应该可以。


推荐阅读