我正在学习Node.js,并使用Spotify API编写一个非常简单的Web应用程序(创建一个播放列表)。
具体来说,我一直在使用passport-spotify包,并使用提供的example作为起点。
我已经能够在应用程序中进行正常的API调用,因为它们不需要任何用户身份验证,但我现在需要发出请求并提供访问令牌。
我以前的电话显然是应用程序的公共脚本中非常简单的ajax请求,但现在我需要访问令牌,我遇到了一些障碍。
到目前为止,我已经考虑过/尝试了两种方法,它们如下:
res.cookie()
,并且res
不会传递给函数。创建一个新路由,当使用ajax请求时,将触发基于节点的api请求,这样访问令牌就会保持隐藏状态。以下是我为此提出的建议。我的回复似乎表明这个想法有效,但我不知道如何检索访问令牌。
app.get('/playlist/:name', function(req, res){
var options = {
url: 'spotify api link, cannot post without more reputation',
headers : {
'Accept': 'application/json',
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: req.params.name,
public: false
})
};
request.post(options, function(error, response, body){
console.log(error);
console.log(response);
console.log(body);
})
});
原谅我在这方面缺乏知识 - 这是我第一次深入研究后端开发和OAuth。检索访问令牌似乎应该很容易,所以也许我会以错误的方式解决它。
感谢阅读!
在任何人都有同样问题的情况下更新:
我通过为访问令牌创建一个全局变量,在它通过应用程序时分配它,然后在回调阶段从它创建一个cookie - 我在上面提到的例子中app.get('/callback')...
解决了这个问题。然后,我可以通过该cookie在我的公共JavaScript中读取令牌。
我应该说我不确定这是否是最好(或最安全)的方法,但它对我的目的有效。我假设为令牌做一个全局变量并不好,但我不确定。
如果有人看到我的解决方案并注意到问题或更好的方法,我仍然有兴趣听到这个。
答案 0 :(得分:0)
使用访问令牌和刷新令牌调用护照配置的回调函数。
SELECT MAX(aa) AS max
FROM
(SELECT SUM(budget) AS aa
FROM dept
GROUP BY managerId) dept
您可以在数据库中存储该访问令牌和刷新令牌。如果您的应用程序使用授权代码流,则可以在数据库中查找或创建一个用户,并将两个令牌存储在该用户对象中。然后,您可以选择此令牌并在您的请求中使用它。
我建议您看看https://github.com/thelinmichael/spotify-web-api-node。这是Spotify API的包装,您可以在其中传递令牌,包装将自动将您的访问令牌作为标头包含在您提出的每个请求中。