无法通过解析云代码访问Dropbox API,尽管它可以与CURL一起使用
我正在尝试从解析云代码访问以下端点:无法通过解析云代码访问Dropbox API,尽管它可以与CURL一起使用,curl,parse-platform,dropbox-api,parse-cloud-code,Curl,Parse Platform,Dropbox Api,Parse Cloud Code,我正在尝试从解析云代码访问以下端点: https://api.dropboxapi.com/2/users/get_current_account return Parse.Cloud.httpRequest({ method: 'POST', url: 'https://api.dropboxapi.com/2/users/get_current_account', headers: { 'Content-Type': 'application/json', 'A
https://api.dropboxapi.com/2/users/get_current_account
return Parse.Cloud.httpRequest({
method: 'POST',
url: 'https://api.dropboxapi.com/2/users/get_current_account',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + newAccessToken
}
});
终点的详细信息:
我的云在提出请求时起作用
return Parse.Cloud.httpRequest({
method: 'POST',
url: 'https://api.dropboxapi.com/2/users/get_current_account',
headers: {
'Authorization': 'Bearer ' + accessToken
}
});
从Dropbox接收到错误:
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:
curl -X POST https://api.dropboxapi.com/2/users/get_current_account --header "Authorization: Bearer **access_token"
这起作用了,我得到了用户的数据
根据错误,我修改了云代码:
https://api.dropboxapi.com/2/users/get_current_account
return Parse.Cloud.httpRequest({
method: 'POST',
url: 'https://api.dropboxapi.com/2/users/get_current_account',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + newAccessToken
}
});
现在我得到了以下错误:
Error in call to API function \"users/get_current_account\": request body: could not decode input as JSON
httpRequest中没有请求主体。然后我尝试将主体设置为null和“”。两人都犯了同样的错误
首先,我不明白为什么dropbox API需要一个没有参数的POST
请求
第二,我如何解决错误
非常感谢
-----更新-----
已尝试错误中的其他两种内容类型,即
'Content-Type': 'application/json;charset=utf-8'
'Content-Type': 'text/plain; charset=dropbox-cors-hack'
但仍然会得到相同的错误:
Error in call to API function \"users/get_current_account\": request body: could not decode input as JSON
我没有使用
Parse.Cloud.httpRequest
,但它可能会发送带有请求正文的默认内容类型参数。然而,curl
不会发送任何内容类型的默认值,这就是为什么它可能与您一起工作的原因
从错误消息中,我可以看到它也将接受文本/普通
,因此您可以尝试使用它
'Content-Type': text/plain; charset=dropbox-cors-hack',
我不知道他们为什么在没有输入数据的情况下使用
POST
。最后!这对我很有用:
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)
下面的链接帮助我确定了解决方案:
谢谢。我现在已经尝试了所有三种内容类型,但仍然得到相同的错误。参考上面的更新。这很奇怪。可能您可以尝试使用
-XGET
。