Podio - 通过 AJAX PUT 更新项目字段
Podio - update item field via AJAX PUT
我需要通过 AJAX 从我构建的外部应用调用来更新跑道项目字段值。我能够完成流程的第一部分 - 获取 OAuth 令牌 - 但我无法弄清楚如何形成 PUT
请求 follow-up...
这是我目前所做的:
$.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
调用做出任何说明,我们将不胜感激。也许 url 不正确?
备注
跑道文档对此步骤提供了一些见解:
'所有这些身份验证方法都会为您提供访问令牌。您将在对 API 的任何后续请求中包含此访问令牌。您将通过在访问令牌中包含 HTTP header 来执行此操作,如下所示:
Authorization: OAuth2 ACCESS_TOKEN 其中 ACCESS_TOKEN 应该替换为您实际获得的访问令牌。'
像这样设置 AJAX header:
headers: {
'Authorization': response.access_token
}
或
headers: {
'Authorization': 'OAuth2 ' + response.access_token
}
也会导致预检错误。
你应该看看 Podio JS 客户端(以及其他客户端,以防你想用另一种语言尝试它)
所有客户:https://developers.podio.com/clients
JS客户端:http://podio.github.io/podio-js/
在 js 客户端中发出请求:http://podio.github.io/podio-js/api-requests/
我的问题的第一部分是此请求需要源自 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)
})
已修复。
我需要通过 AJAX 从我构建的外部应用调用来更新跑道项目字段值。我能够完成流程的第一部分 - 获取 OAuth 令牌 - 但我无法弄清楚如何形成 PUT
请求 follow-up...
这是我目前所做的:
$.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
调用做出任何说明,我们将不胜感激。也许 url 不正确?
备注 跑道文档对此步骤提供了一些见解:
'所有这些身份验证方法都会为您提供访问令牌。您将在对 API 的任何后续请求中包含此访问令牌。您将通过在访问令牌中包含 HTTP header 来执行此操作,如下所示: Authorization: OAuth2 ACCESS_TOKEN 其中 ACCESS_TOKEN 应该替换为您实际获得的访问令牌。'
像这样设置 AJAX header:
headers: {
'Authorization': response.access_token
}
或
headers: {
'Authorization': 'OAuth2 ' + response.access_token
}
也会导致预检错误。
你应该看看 Podio JS 客户端(以及其他客户端,以防你想用另一种语言尝试它)
所有客户:https://developers.podio.com/clients
JS客户端:http://podio.github.io/podio-js/
在 js 客户端中发出请求:http://podio.github.io/podio-js/api-requests/
我的问题的第一部分是此请求需要源自 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)
})
已修复。