首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法通过解析云代码访问Dropbox,尽管它使用CURL。

无法通过解析云代码访问Dropbox,尽管它使用CURL。
EN

Stack Overflow用户
提问于 2016-01-27 07:31:43
回答 2查看 1.9K关注 0票数 1

我试图从解析云代码中访问以下端点:

代码语言:javascript
复制
https://api.dropboxapi.com/2/users/get_current_account

终点详情:

account

我的云功能在提出请求的时候。

代码语言:javascript
复制
return Parse.Cloud.httpRequest({
  method: 'POST',
  url: 'https://api.dropboxapi.com/2/users/get_current_account',
  headers: {
    'Authorization': 'Bearer ' + accessToken
  }
});

从Dropbox收到的错误:

代码语言:javascript
复制
Error in call to API function "users/get_current_account": Bad HTTP "Content-Type" header: "application/x-www-form-urlencoded".  Expecting one of "application/json", "application/json; charset=utf-8", "text/plain; charset=dropbox-cors-hack"

然后我尝试使用CURL:

代码语言:javascript
复制
curl -X POST https://api.dropboxapi.com/2/users/get_current_account --header "Authorization: Bearer **access_token"

这起作用了,我得到了用户的数据。

基于错误,我修改了云代码:

代码语言:javascript
复制
return Parse.Cloud.httpRequest({
  method: 'POST',
  url: 'https://api.dropboxapi.com/2/users/get_current_account',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + newAccessToken
  }
});

现在,我得到了以下错误:

代码语言:javascript
复制
Error in call to API function \"users/get_current_account\": request body: could not decode input as JSON

httpRequest中没有请求体。然后,我尝试将body设置为null和'‘。两人都犯了同样的错误。

首先,我不明白为什么dropbox需要一个没有参数的POST请求。

第二,如何解决错误。

非常感谢!

-更新

从错误中尝试了另外两种内容类型,即

代码语言:javascript
复制
'Content-Type': 'application/json;charset=utf-8'
'Content-Type': 'text/plain; charset=dropbox-cors-hack'

仍然得到相同的错误:

代码语言:javascript
复制
Error in call to API function \"users/get_current_account\": request body: could not decode input as JSON
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-27 11:46:48

终于来了!这对我起了作用:

代码语言:javascript
复制
return Parse.Cloud.httpRequest({
  method: 'POST',
  url: 'https://api.dropboxapi.com/2/users/get_current_account',
  headers: {
    'Content-Type': 'application/json; charset=utf-8',
    'Authorization': 'Bearer ' + newAccessToken
  },
  body: JSON.stringify(null)
});

我不得不在身体里使用JSON.stringify(null)

下面的链接帮助我确定了解决方案:

https://www.dropboxforum.com/hc/en-us/community/posts/204379696-get-current-account-API-is-strange-and-does-not-work-with-common-sense-

票数 2
EN

Stack Overflow用户

发布于 2016-01-27 07:49:40

我没有使用Parse.Cloud.httpRequest,但它可能会发送一个默认的内容类型参数和请求体。然而,curl不为内容类型发送任何默认值,这就是为什么它可能与您一起工作的原因。

从错误消息中,我可以看到它也会接受text/plain,所以您可以尝试这样做。

代码语言:javascript
复制
'Content-Type': text/plain; charset=dropbox-cors-hack',

我不知道他们为什么要使用没有传入数据的POST

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35031236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档