2013-12-11 133 views
0

我不是一個js程序員。但出於某種原因,我必須編寫一個js程序來獲取訪問令牌,以便程序可以使用Dropbox核心API。使用Javascript for Dropbox核心api

我曾嘗試如下:

  var xhr = new XMLHttpRequest(); 
     xhr.open("POST", "https://api.dropbox.com/1/oauth/request_token?oauth_consumer_key=qxxxxxxxx&oauth_consumer_secret=axxxxxxxxx", false); 
     xhr.send(); 
     console.log("status: " + xhr.statusText); 
     console.log("response: " + xhr.responseText); 

這是不行的......我需要幫助〜

響應:{「錯誤」:「未授權」}這是錯誤信息我收到

+0

定義「不工作」... – Sinkingpoint

+0

一個小的「警告字」。 SO真的不是爲了幫助非程序員太多。 – millimoose

+0

我看到的第一個潛在問題是AJAX請求是異步的。也就是說,在調用send()之後,解釋器不會等待請求完成。您的日誌記錄不會打印任何內容,因爲請求仍在等待。這就是說,我不知道XHR是否默認爲同步或異步模式,主要是因爲我傾向於使用jQuery來處理AJAX。 – millimoose

回答

0

致電request_token必須使用OAuth進行簽名。你應該傳遞一個Authorization頭,看起來像這樣(使用PLAINTEXT簽名):

OAuth oauth_version="1.0", oauth_signature_method="PLAINTEXT", oauth_consumer_key="<app key>", oauth_signature="<app secret>&" 

但是,你走這條路之前,你應該使用OAuth 2代替。這比OAuth 1簡單。我可以看到使用OAuth 1的唯一原因是,如果您的應用無法託管在HTTPS上。 (OAuth 2需要HTTPS重定向URI。)

而且,在您全部手動構建之前,您應該只使用dropbox-js。那麼你的代碼會是這樣的:

var client = new Dropbox.Client({key: '<app secret>'}); 
client.authenticate(); 
+0

很棒,謝謝 – Alvin