【问题标题】:How to use the Spotify Access Token outside of an Express Route如何在 Express Route 之外使用 Spotify 访问令牌
【发布时间】:2017-09-06 07:59:11
【问题描述】:

我目前正在学习 Node.js 和 Express,并想构建一个简单的应用程序来查询 Spotify Web API,而无需使用外部库,例如 spotify-web-api-node。我的代码可在https://pastebin.com/Jwe8sckJ获得

我的“/callback”路由是这样的;

app.get("/callback", function(req, res){
    res.send("OK!")
    var authCode = req.query.code
    var options = { method: 'POST',
      url: 'https://accounts.spotify.com/api/token',
      headers: { 'content-type': 'application/x-www-form-urlencoded' },
      form: 
       { grant_type: 'authorization_code',
       code: authCode,
       redirect_uri: 'https://example.com/callback',
       client_id: clientId,
       client_secret: clientSecret } };
    request(options, function (error, response, body) {
  if (error) throw new Error(error);
  var accessToken = JSON.parse(body).access_token;
  var refreshToken = JSON.parse(body).refresh_token
  console.log("Access Token: " + accessToken);
  console.log("Refresh Token: " + refreshToken);
    });

});

到目前为止,一切正常,我能够获得访问令牌和刷新令牌。我感到困惑的部分是我现在如何在“/callback”路由之外使用这些令牌?或者也许另一种询问方式是如何全局保存变量。如果我这样做,是否会对脚本的新会话产生任何影响?

【问题讨论】:

    标签: node.js express spotify


    【解决方案1】:

    最常见的解决方案是将这些令牌存储在数据库中,即MongoDB 或 MySQL,并在需要时检索它们。您可能希望使用sessions 来设置每个客户端接收到的令牌。

    您甚至可以将令牌保存在会话中,但请注意会话是不稳定的。

    【讨论】:

    • 如何将访问令牌作为 cookie 存储在用户浏览器中?这些 cookie 仅针对 1 位用户,可能用于收集私人用户数据
    • 使用上述库创建会话会在后台为您创建一个 cookie。客户端存储一个带有 ID 的 cookie,它与每个请求一起发送到服务器。然后,服务器可以使用该 cookie 的 ID 来识别客户端。
    【解决方案2】:

    如果我猜对了,那么您想保存访问令牌以备后用。可以声明全局变量,以后可以使用。

    global.spotify_access_token = '';
    

    在任何文件的开头声明此变量。现在您可以使用此变量将访问令牌保存在回调中。如下所示:

    spotify_access_token = JSON.parse(body).access_token;
    

    希望这会对您有所帮助。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 2015-07-17
      • 2017-06-26
      相关资源
      最近更新 更多