2013-08-04 6 views
2

Я пытаюсь получить и хранить токен доступа из Pocket API с помощью Node.js. Я могу получить токен запроса, перенаправить на страницу входа в Кармен, перенаправить обратно на свой сайт и, наконец, обменять токен запроса на токен доступа.Как сохранить access_token, полученный от OAuth для последующего использования?

Но вот где моя проблема лежит. Я не знаю, как я должен был на самом деле хранить токен, и без него я не могу совершать вызовы 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(); 
    }); 

}; 

Я думал, что я должен хранить маркер доступа на стороне клиента, но я на самом деле не знаю, как идти о выполнении этого. Я пробовал использовать файлы cookie, но это, похоже, не сработало. Конечно, я, возможно, просто внедрил их неправильно.

Ваша помощь очень ценится.

+1

Что вы пытаетесь использовать для печенья и что заставляет вас говорить, что он не работает? –

+0

Должен был уточнить! Я использовал модуль узла [Cookies] (https://github.com/jed/cookies), и, хотя я мог заставить его работать, он, казалось, раздувал мой код и временами был ненадежным. Я не думал, что печенье будет решением, но если у вас есть какие-то предложения? – thebradbain

ответ

1

Вы должны, вероятно, сделать работу с печеньем. вариант 2 заключается в использовании localStorage, но если вы боретесь с кукисами, я бы не стал пытаться идти по этому пути - он дает вам больше контроля, когда токены отправляются по проводам, но также требует гораздо больше работы, чтобы сделать ваш сервер и кодовая координата клиента.

2

Как вы храните маркер доступа, обычно зависит от того, где вы будете использовать API.

Обычно мне нравится сохранять токены в базе данных (например, MongoDB) в документе пользователя, с которым они связаны, а затем мой веб-клиент может ping мой сервер (через конечную точку RESTful), если для этого нужен токен. Таким образом, если пользователь очистит все это состояние в браузере, вам не придется снова проходить весь поток OAuth.

Смежные вопросы