Создание задачи в Asana с помощью JS (сбой) и CURL (работа)
Я пишу систему цитат для себя.
У меня есть эта веб-страница для цитат, которая: а) отправляет электронное письмо клиенту (готово) с указанными пунктами б) создает запись в электронной таблице Google (готово) в) создает задачу в асане (не удается)
В течение последних 2 дней я занимался серфингом и читал все, что смог найти, но решение скинулось с моей головы, поэтому я прошу 4 часа asistnace.
Это код CURL, который прекрасно работает:
curl -H "Authorization: Bearer 0/7alotofnumbers" \
https://app.asana.com/api/1.0/tasks \
-d "projects=83694179XXXXXX" \
-d "tags[0]=269280227XXXXXX" \
-d "assignee=sales@atmysite.com.mx" \
-d "due_on=2017-02-09" \
-d "name=testing with curl" \
-d "notes=it works just as expected" \
-d "followers[0]=myself@atmysite.com.mx"
Теперь я перевел команду CURL, которая РАБОТАЕТ, в asanataskcreate.coffee:
$.ajax
url: 'https://app.asana.com/api/1.0/tasks'
beforeSend: (xhr) ->
xhr.setRequestHeader 'Authorization', 'Bearer 0/7alotofnumbers'
return
contentType: 'application/json'
method: 'get'
data:
projects: [ 83694179XXXXXX ]
tags: [ 269280227XXXXXX ]
assignee: 'sales@atmysite.com.mx'
due_on: '2017-02-09'
name: 'testing with js ajax'
notes: 'it does not work'
followers: [ 'myself@atmysite.com.mx' ]
который превращается в asanataskcreate.js:
$.ajax({
url: 'https://app.asana.com/api/1.0/tasks',
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer 0/7alotofnumbers');
},
contentType: 'application/json',
method: 'get',
data: {
projects: [83694179XXXXXX],
tags: [269280227XXXXXX],
assignee: 'sales@atmysite.com.mx',
due_on: '2017-02-28',
name: 'testing with js ajax',
notes: 'it does not work',
followers: ['myself@atmysite.com.mx']
}
});
И, НЕДОСТАТКИ:(
Хорошо, я попробовал:
а) метод: "пост" и "получить"
б) разместите, удалите '[]' в проектах, тегах и подписчиках
С помощью Chrome devtools в "консоли" я получаю следующее сообщение:
Failed to load resource: the server responded with a status of 400 (Bad Request)
а также
XMLHttpRequest cannot load https://app.asana.com/api/1.0/tasks?projects%5B%5D=836941797XXXXXX&tags%5B%5…¬es=it+does+not+work&followers%5B%5D=myself%40atmysite.com.mx. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://atmysite.com.mx' is therefore not allowed access. The response had HTTP status code 400.
Теперь, в DevTools, при проверке ответа XHR от асаны, это то, что я получаю:
message: "You should specify one of workspace, project, tag, section"
Как вы можете видеть из кода, определен идентификатор проекта, но в JS происходит сбой и в curl работает.
Анализируя, почему "проекты" в curl работают и в ajax не работают, разница заключается в следующем:
curl: projects=83694179XXXXXX
js ajax: projects%5B%5D=836941797XXXXXX ==> projects[]=836941797XXXXXX
Любой имеет представление о том, что я делаю неправильно.
Заранее спасибо за ваше время и помощь
1 ответ
Вот пример запроса Ajax, который создает задачу Asana:
$.ajax({
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + "0/0123...");
},
url: "https://app.asana.com/api/1.0/tasks",
method: 'POST',
data: {projects:123456789, name: "ajax created task"},
});
Неясно, какая часть вашего скомпилированного кода Ajax неверна. Вам обязательно нужно использовать POST
запрос на создание нового задания. Значения данных не должны быть в массивах. Вам, вероятно, не нужно перечислять contentType
по умолчанию будет работать. Вы должны быть в состоянии получить ваш код в рабочем состоянии на основе моего примера.
Вы также должны знать, что, используя Ajax, вы выставляете свой токен личного доступа на клиенте. Если вы видите что-либо подозрительное в своей учетной записи, вы можете удалить этот PAT.