问题描述
function getClickupTeam() {
let response = UrlFetchApp.fetch(clickupUrl + "team",{
"method": "GET","Authorization": clickupToken,"muteHttpExceptions": true
})
Logger.log(response)
let json = JSON.parse(response);
Logger.log(json);
}
此 URLFetchApp 调用返回 {ECODE=OAUTH_017,err=Authorization header required},即使我在请求中包含了我的个人点击令牌。我错过了什么吗?任何帮助将不胜感激。
解决方法
在通过 https://clickup.com/api 对该主题进行一些研究时,我偶然发现了一些代码。对于不同的事情有几个不同的,我推荐第一个,JavaScript(因为它最接近你目前正在做的事情)。在评论中,您说它用于编辑任务,因此这就是此代码的目的。
javascript
var request = new XMLHttpRequest();
request.open('PUT','https://api.clickup.com/api/v1/task/{task_id}');
request.setRequestHeader('Content-Type','application/json');
request.setRequestHeader('Authorization','"access_token"');
request.onreadystatechange = function () {
if (this.readyState === 4) {
console.log('Status:',this.status);
console.log('Headers:',this.getAllResponseHeaders());
console.log('Body:',this.responseText);
}
};
var body = {
'name': 'New Task Name','content': 'New Task Content','assignees': {
'add': [
1
],'rem': [
2
]
},'status': 'Closed','priority': 3,'due_date': '1508369194377'
};
request.send(JSON.stringify(body));
卷曲
curl --include \
--request PUT \
--header "Content-Type: application/json" \
--header "Authorization: "access_token"" \
--data-binary "{
\"name\": \"New Task Name\",\"content\": \"New Task Content\",\"assignees\": {
\"add\" : [
1
],\"rem\" : [
2
]
},\"status\": \"Closed\",\"priority\": 3,\"due_date\": \"1508369194377\"
}" \
'https://api.clickup.com/api/v1/task/{task_id}'
node.js
var request = require('request');
request({
method: 'PUT',url: 'https://api.clickup.com/api/v1/task/{task_id}',headers: {
'Content-Type': 'application/json','Authorization': '\'access_token\''
},body: "{ \"name\": \"New Task Name\",\"assignees\": { \"add\": [ 1 ],\"rem\": [ 2 ] },\"due_date\": \"1508369194377\"}"
},function (error,response,body) {
console.log('Status:',response.statusCode);
console.log('Headers:',JSON.stringify(response.headers));
console.log('Response:',body);
});
这是针对生产的,如果您需要 mock server
或 debugging proxy
看起来您的请求格式不正确(请务必查看 UrlFetchApp.fetch(url,params)
方法的参考文档。)Authorization
标头应位于显式 headers
对象中。另外,您不需要将 method 设置为 GET
,因为它是默认设置。
在发出 POST
请求时要记住的其他事项 - Google Apps Script 有一个有趣的怪癖,您必须使用 Content-Type
属性定义 contentType
标头。如果您尝试在 headers
对象中设置该标头 if 将被默认覆盖(我相信 application/x-www-form-urlencoded
)。
以下是您设置 GET
请求的方法:
function getClickupTeam() {
let response = UrlFetchApp.fetch(clickupUrl + "team",{
"muteHttpExceptions": true,"headers": {
"Authorization": clickupToken
}
}
console.log(response.getContentText());
let json = JSON.parse(response.getContentText());
console.log(json);
);
对于带有 JSON 负载的 POST
请求,您可以执行以下操作:
function getClickupTeam() {
let response = UrlFetchApp.fetch(clickupUrl + "team",{
"method": "POST","contentType": "application/json","muteHttpExceptions": true,"headers": {
"Authorization": clickupToken
},"payload": JSON.stringify({
"key": "value"
});
}
console.log(response.getContentText());
let json = JSON.parse(response.getContentText());
console.log(json);
);