我正在尝试使用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,但我实际上并不知道如何去做。我尝试过使用cookies,但这似乎不起作用。当然,我可能刚刚错误地实施了它们。
非常感谢您的帮助。
答案 0 :(得分:2)
存储访问令牌的方式通常取决于您将使用API的位置。
我通常喜欢在与他们相关联的用户文档中持久保存数据库中的令牌(如MongoDB),然后我的Web客户端可以ping我的服务器(通过RESTful端点),如果它需要任何令牌。这样,如果用户清除浏览器上的所有状态,则无需再次浏览整个OAuth流程。
答案 1 :(得分:1)
你应该让饼干的东西起作用。选项2是使用localStorage但是如果你正在努力使用cookies我不会尝试沿着这条路走下去 - 它可以让你更好地控制令牌何时通过网络发送,但也需要更多的工作来使您的服务器端和客户端代码协调。