如何存储从OAuth获得的access_token以备将来使用



我正在尝试使用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,我不会尝试走这条路——这让你可以更好地控制代币何时通过网络发送,但也需要更多的工作来协调服务器端和客户端的代码。

相关内容

  • 没有找到相关文章

最新更新