2016-08-16 6 views
0

angular.js를 사용하여 dropbo에 대한 연결을 구축하려고합니다. 이를 위해 다음 코드를 가지고 https://api.dropboxapi.com/1/oauth2/token에 요청하십시오.Angular dropbox api/token endpoint가 잘못된 요청을 반환합니다.

코드는 사용자가 드롭 다운 박스의 확인 URL로 클릭 연결 한 후 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" 
      }) 

그러나이 작업을하려면 잠시 동안 노력했지만 방해가됩니다. 나는이 오류의 원인이 무엇인지 모르겠지만 항상 다음과 같은 응답입니다 : 오류 : ERROR_DESCRIPTION "INVALID_REQUEST"

그리고 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

고마워요! 그것은 많은 의미가 있습니다. 그러나 드롭 박스 API의 응답은 변경된 후에도 여전히 동일합니다. { "error_description": "주어진 요청에 사용할 수있는 인증 기능이 없습니다", "오류": "invalid_request"} – Hine

+0

'GET'요청을 사용해야한다고 생각합니다. 'POST'대신. 내 대답을 편집했습니다. – atn

0

나는 마침내 해답을 발견했다. dropbox의 API 문서는 contentType을 보내야한다는 사실을 알지 못했습니다 : "application/x-www-form-urlencoded".

그들은 일반적으로 json을 보내야한다는 것을 알아 차 렸습니다. 그렇게 언급하지 않으면 나는 이것이 사실이라고 생각했습니다.