我正在尝试使用Node.js从Pocket API获取并存储访问令牌。我可以获取请求令牌,重定向到Pocket登录页面,重定向回我的网站,最后可以将请求令牌交换为访问令牌。
但这就是我的问题所在。我不知道如何实际存储令牌,如果没有它,我就无法进行API调用(当然)。这是相关代码:
//called when Pocket API redirects back to /getAccessToken
function getAccessToken(response, requestToken) {
restler.post("https://getpocket.com/v3/oauth/authorize", {
headers: { "Content-Type" : "application/json",
"X-Accept" : "application/json" },
data : JSON.stringify({consumer_key:CONSUMER_KEY,code:requestToken})
}).on("complete", function(data, res) {
if(res.statusCode == 200) {
var accessToken = data.access_token;
console.log("Access granted: " + accessToken);
//BUT HOW DO I STORE THE ACCESS TOKEN FOR USE OF API CALLS ??
}
response.writeHead(307, {Location: DNS}); //go back to site
response.end();
});
};
我想我应该在客户端存储accessToken,但实际上我不知道该怎么做。我试过用饼干,但似乎没用。当然,我可能只是错误地执行了它们。
非常感谢你的帮助。
如何存储访问令牌通常取决于您将在哪里使用API。
我通常喜欢在与令牌相关联的User文档上的数据库(如MongoDB)中保留令牌,然后如果我的web客户端需要令牌,它可以(通过RESTful端点)ping我的服务器。这样,如果用户清除了浏览器上的所有状态,就不必再经历整个OAuth流。
您可能应该让cookie工作起来。选项2是使用localStorage,但如果你在使用cookie,我不会尝试走这条路——这让你可以更好地控制代币何时通过网络发送,但也需要更多的工作来协调服务器端和客户端的代码。