微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用我的个人点击令牌从 Google Apps 脚本进行点击 API 调用

如何解决使用我的个人点击令牌从 Google Apps 脚本进行点击 API 调用

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 serverdebugging 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);
   
);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。