我一整天都在尝试使用 axios 在 react 中执行发布请求(我正在尝试为 Monzo 应用程序获取 access_token)。我已按照此处的说明进行操作,并且在使用命令行工具进行尝试时,它们可以正常工作,httpie
如所述说明所示。但是,当我尝试在我的 react 应用程序中使用它时,事情就出错了。使用httpie的post请求如下:
http --form POST "https://api.monzo.com/oauth2/token" \
"grant_type=authorization_code" \
"client_id=my_client_id" \
"client_secret=my_client_secret" \
"redirect_uri=my_redirect_uri" \
"code=my_authorization_code"
这可以按预期工作并返回一个包含我的 access_token 的 JSON 对象。
我在我的 react 应用程序中使用的(有问题的)axios 命令是:
axios.post(
"https://api.monzo.com/oauth2/token", {
grant_type: "authorization_code",
client_id: my_client_id,
client_secret: my_client_secret,
redirect_uri: my_redirect_uri,
code: my_authorization_code
})
我收到的错误消息是Failed to load resource: the server responded with a status of 400 ()
.
我发现了这个非常相关的问题,它建议我添加一个标头指定Content-Type: application/json
,所以我将我的 axios 命令更改为:
axios({
method: "POST",
url: "https://api.monzo.com/oauth2/token",
data: JSON.stringify({
grant_type: "authorization_code",
client_id: my_client_id,
client_secret: my_client_secret,
redirect_uri: my_redirect_uri,
code: my_authorization_code
}),
headers: {
'Content-Type': 'application/json'
}
})
不幸的是,这给出了完全相同的错误。
有人可以给我一些指示吗?我对网络很陌生...谢谢!