我正在从 heroku 运行基于 nodejs + express 的 api 服务器并使用dropbox-js库。这是我想做的:
- 用户点击特定的 api 端点并启动该过程。
- 通过节点进程生成一些文本文件并保存在服务器上
- 使用我自己的凭据(用户和 Dropbox 应用程序)将这些文件传输到我拥有的 Dropbox。
永远不会有随机用户需要这样做的情况。这是一个团队帐户,这是一个内部工具。
让我绊倒的部分是保管箱想要打开一个浏览器窗口并获得我的许可以连接到该应用程序。问题是,当进程在 heroku 实例上运行时,我显然无法单击按钮。
我有什么办法可以完全在节点中授权访问该应用程序?
我觉得我可能会使用 phantomJS 进程来单击按钮 - 但它似乎太复杂了,如果可能的话我想避免它。
这是我的验证码:
// Libraries
var Dropbox = require('dropbox');
var DROPBOX_APP_KEY = "key";
var DROPBOX_APP_SECRET = "secret";
var dbClient = new Dropbox.Client({
key: DROPBOX_APP_KEY, secret: DROPBOX_APP_SECRET, sandbox: false
});
dbClient.authDriver(new Dropbox.Drivers.NodeServer(8191));
dbClient.authenticate(function(error, client) {
if (error) {
console.log("Some shit happened trying to authenticate with dropbox");
console.log(error);
return;
}
client.writeFile("test.txt", "sometext", function (error, stat) {
if (error) {
console.log(error);
return;
}
console.log("file saved!");
console.log(stat);
});
});