我試圖從Google Apps腳本中查詢Todoist API中的項目,模仿捲曲POST。通過Google Apps腳本POST到Todoist API的HTTP錯誤「AUTH_CSFR_ERROR」
我最初嘗試讓OAuth2工作,但令牌不是持久的,我選擇使用單個API令牌交換有效令牌的API's method。
使用App腳本的UrlFetchApp class,我試圖在爲Todoist的API POST請求,構建取回任務物品,和我的getTodoistToken()
功能的確是獲取有效令牌響應,但POST指令發出以下403:
「error_tag」: 「AUTH_CSRF_ERROR」, 「ERROR_CODE」:0 「HTTP_CODE」:403, 「error_extra」:{ 「ACCESS_TYPE」: 「web_session」}, 「錯誤」: 「AUTH_CSRF_ERROR」}
任何人都可以推薦一個解決方案嗎?非常感謝,代碼如下:
function getTodoistToken() {
var url = "https://todoist.com/api/access_tokens/migrate_personal_token";
var data = {
"client_id": "[my unique client_id]",
"client_secret": "[my unique client_secret]",
"personal_token":"[my API token from Todoist dashboard]",
"scope": "data:read"
};
var payload = JSON.stringify(data);
var headers = {
"Content-Type":"application/json",
};
var options = {
"method":"POST",
"contentType" : "application/json",
"headers": headers,
"payload" : payload
};
var response = UrlFetchApp.fetch(url, options);
var json = response.getContentText();
var data = JSON.parse(json);
return(data.access_token);
}
function getTodoistTasks(){
var apiURL = "https://todoist.com/API/v7/sync";
var data = {
"token" : getTodoistToken(),
"sync_token" : '*',
"resource_types" : '["items"]'
};
var payload = JSON.stringify(data);
Logger.log(payload);
var headers = {
"Content-Type":"application/json",
};
var options = {
"method":"POST",
"contentType" : "application/json",
"headers": headers,
"payload" : payload,
"muteHttpExceptions" : true
};
var response = UrlFetchApp.fetch(apiURL, options);
Logger.log(response.getContentText());
}