我正在從heroku運行基於nodejs + express的api服務器並使用dropbox-js庫。以下是我想要做的:無需基於瀏覽器的oauth身份驗證,將文件從節點j傳輸到Dropbox
- 用戶點擊特定的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);
});
});
非常感謝您花時間測試出來!這正是我所期待的。乾杯! – 2013-05-02 17:09:51
我不知道我在做什麼錯,但我使用上面的代碼與一個密鑰,祕密,令牌密鑰和令牌密鑰,我知道所有這些都是有效的,並且我無法獲得超出當我嘗試上傳文件時出現未經授權的錯誤。我在這裏錯過了什麼? – Sydin 2013-11-15 23:24:29
更新:我的猜測是這與dropbox-js移動到oauth2有關,但它看起來像憑證正在改變;我正在緩存一個令牌而不是一個令牌和祕密,這就是訣竅。 – Sydin 2013-11-16 01:45:06