我需要通过来自我构建的外部应用程序的AJAX调用来更新Podio项目字段值。我能够完成流程的第一部分 - 获取OAuth令牌 - 但我无法确定如何形成PUT
请求后续行动......
这是我到目前为止所做的事情:
$.ajax({
type:'POST',
url:'https://podio.com/oauth/token',
data: {
'grant_type': 'app',
'app_id': '1234',
'app_token': '1234',
'client_id': 'myidcode',
'redirect_uri': 'redirect.com',
'client_secret': '1234secret4321'
}
}).done(function(response){
$.ajax({
type:'PUT',
url:'https://api.podio.com/item/${item_id}/value/${field_id}',
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'OAuth2 ' + response.access_token)
},
data: {
values: "doofus@test.com"
}
}).done(function(){
console.log("Ok!")
})
})
第一个AJAX调用成功 - 我在响应中返回了我的身份验证令牌。但是,第二次AJAX调用会导致XMLHttpRequest cannot load https://api.podio.com/item/1/value/142236262. Response for preflight has invalid HTTP status code 400
错误。
我确信这是一个简单的解决方案,而且我已经接近完成我需要做的事情......对PUT
电话的任何澄清都会非常感激。也许网址不正确?
注意 Podio文档提供了对此步骤的一些见解:
'所有这些身份验证方法都将为您提供访问令牌。您将在API的任何后续请求中包含此访问令牌。您将通过包含带有访问令牌的HTTP标头来执行此操作,如下所示: 授权:OAuth2 ACCESS_TOKEN ACCESS_TOKEN应替换为您获得的实际访问令牌。'
像这样设置AJAX标题:
headers: {
'Authorization': response.access_token
}
或
headers: {
'Authorization': 'OAuth2 ' + response.access_token
}
也会导致预检错误。
答案 0 :(得分:1)
我的问题的第一部分是这个请求需要来自https。一旦我清除了它,另一个问题是我忘记设置内容类型。
$.ajax({
type:'PUT',
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'OAuth2 ' + response.access_token)
},
contentType: 'application/json',
url:'https://api.podio.com/item/654321/value/12345',
data: JSON.stringify({'value': 'new_value'})
}).done(function(response){
console.log(response)
}).fail(function(error){
console.log(error)
})
修补了它。
答案 1 :(得分:0)
您应该查看Podio JS客户端(以及其他客户端以防万一,如果您想用其他语言试用它)
所有客户:https://developers.podio.com/clients
JS客户:http://podio.github.io/podio-js/
在js客户端发出请求:http://podio.github.io/podio-js/api-requests/