我正在尝试使用
然而,在为第1步和第2步(获取
我试图将
以下是简化后的代码:
NodeJS
, node-dbox
和Express
创建一个小的应用程序。当请求DropBox
授权时,这是一个3个步骤的过程,首先需要获取request_token
,然后用户授权访问dropbox页面,然后才能基于request_token
和用户已授权的请求请求access_token
。然而,在为第1步和第2步(获取
request_token
并向用户提供url)服务的时候,request_token
实例已经不存在了!因此在第3步中我不能请求一个access_token
,因为它需要传递request_token
。我试图将
request_token
保存在cookie中,但鉴于其中包含敏感数据,将其发送给客户端可能不是一个好主意。有什么想法吗?以下是简化后的代码:
(function() {
var dbox = require('dbox'),
config = require('easy-config'),
express = require('express'),
dboxApp = dbox.app(config.dropbox_credentials),
app = express();
app.use(express.cookieParser());
app.get('/', function(req, res) {
dboxApp.requesttoken(function(status, request_token) {
res.cookie('request_token', JSON.stringify(request_token));
res.send("<a href='" + request_token.authorize_url + "' targe='_new'>authorize via dropbox</a><br/>" + "<a href='/next'>next</a>");
});
});
app.get('/next', function(req, res) {
var request_token = JSON.parse(req.cookies.request_token);
if(request_token) {
dboxApp.accesstoken(request_token, function(status, access_token) {
var client = dboxApp.client(access_token);
client.account(function(status, reply){
res.send(reply);
});
});
} else {
res.send('sorry :(');
}
});
app.listen(3000);
})();
附加问题: client
是使用 access_token
创建的,因此需要在页面刷新时维护 client 实例或 access_token,有什么最好的方法?