2016-08-16 45 views
0

我想要建立一個連接到dropbo使用angular.js。爲此,我有以下一段代碼來請求https://api.dropboxapi.com/1/oauth2/token角落Dropbox API /令牌端點返回無效請求

代碼是在用戶點擊後到達Dropbox的驗證網址並返回後在url中獲得的。 $ scope.accessUrl ='https://www.dropbox.com/1/oauth2/authorize?client_id=szj63bffo9rp5v7&response_type='+ $ scope.response_type +'& redirect_uri ='+ $ scope.redirect_uri; 這似乎工作,因爲代碼是通過get返回的,它在下面的函數中可用。

  $http({ 
       method: 'POST', 
       grant_type: 'authorization_code', 
       code: <<<<token>>>>, 
       client_id: '<<<<mydropbox.key>>>>', 
       client_secret: '<<<<mydropbox.secret>>>>', 
       redirect_uri: "http://localhost:8080", 

       contentType: "application/json", 
       url: "https://api.dropboxapi.com/1/oauth2/token" 
      }) 

但是,我試了一段時間纔得到這個工作,它卡住了。我不知道是什麼原因造成這個錯誤,但它始終是以下回應: 錯誤:「INVALID_REQUEST」 ERROR_DESCRIPTION:

HTTP狀態碼「沒有可用於給定的請求身份驗證功能」始終是400(壞請求)。

我是新角度。類似的$ http請求適用於不同的端點。對於這個端點,我把承載人:< < < < <授權密鑰,應該從破壞函數返回>>>>在身體的數據{}和url中的路徑。

如果有人知道我做錯了什麼,我猜這可能是一個愚蠢的錯誤,我會喜歡一些幫助。

回答

0

您應該將data屬性中的所需數據作爲字典傳遞。 https://docs.angularjs.org/api/ng/service/$http#usage

如果您需要在標頭中傳遞一些數據,請使用headers屬性。 https://docs.angularjs.org/api/ng/service/$http#setting-http-headers

 $http({ 
      method: 'GET', 
      data: { 
       grant_type: 'authorization_code', 
       code: <<<<token>>>>, 
       client_id: '<<<<mydropbox.key>>>>', 
       client_secret: '<<<<mydropbox.secret>>>>', 
       redirect_uri: "http://localhost:8080" 
      }, 
      contentType: "application/json", 
      url: "https://api.dropboxapi.com/1/oauth2/token" 
     }) 
+0

謝謝!這很有道理。但是,dropbox API的響應在更改後仍然是相同的。{「error_description」:「給定請求沒有授權功能」,「error」:「invalid_request」} – Hine

+0

我認爲您需要使用'GET'請求而不是'POST'之一。編輯我的答案。 – atn

0

我終於找到了答案。 Dropbox的API文檔沒有注意到我必須發送contentType的事實:「application/x-www-form-urlencoded」。

他們注意到,一般來說你應該發送json,所以我認爲這是真的,除非另有說明。

相關問題