0

我正在尝试使用 angular.js 建立与 dropbo 的连接。为此,我有以下代码向https://api.dropboxapi.com/1/oauth2/token发出请求。

代码是在用户点击到dropbox的验证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"
            })

但是,我已经尝试了一段时间才能使其正常工作,但我被卡住了。我不确定是什么导致了这个错误,但它总是以下响应:错误:“无效请求”错误描述:“没有可用于给定请求的身份验证功能”

HTTP 状态码始终为 400(错误请求)。

我是角度的新手。类似的 $http 请求适用于不同的端点。对于这个端点,我把 Bearer: <<<< 应该从上面的损坏函数返回的授权密钥 >>>> 放在 url 和正文的 data{} 中的路径。

如果有人知道我做错了什么,我猜这可能是一个愚蠢的错误,我希望得到一些帮助。

4

2 回答 2

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"
        })
于 2016-08-16T14:50:33.877 回答
0

我终于找到了答案。Dropbox 的 API 文档没有注意到我必须发送 contentType:“application/x-www-form-urlencoded”这一事实。

他们注意到通常你应该发送 json 所以我认为这是真的,除非另有说明。

于 2016-08-17T11:30:16.000 回答