2013-09-09 2 views
1

Я пытаюсь собрать букмарклет, который может отображать URL-адрес текущей страницы, заголовок и любой выделенный текст, а затем публиковать это как новую задачу для Asana через API.asana javascript bookmarklet для создания новой задачи

Я создал конкретный проект для их входа, захватил project id и идентифицировал workspace id. Тестирование этих значений с помощью локон в командной строке работает отлично:

curl --user MYAPIKEY: https://app.asana.com/api/1.0/workspaces/MYWORKSPACEID/tasks --data-urlencode 'name=Hello World' --data-urlencode 'notes=How are you' --data-urlencode 'projects[0]=MYPROJECTID' 

заимствование из другого примера Javascript букмарклет-х я соединил следующий код:

javascript: 
apikeyhash='MYBASE64ENCODEDAPIKEYPLUSCOLON'; 
workspaceid='MYWORKSPACEID'; 
projectid='MYPROJECTID'; 
title=document.title; 
loc=location.href; 
if(document.getSelection) { 
    text=location+'\r\r'+document.getSelection(); } 
else { 
    text=location; 
} 
xml = new XMLHttpRequest(); 
xml.open('POST', 'https://app.asana.com/api/1.0/workspaces/'+workspaceid+'/tasks', false); 
xml.setRequestHeader("Authorization", 'Basic '+apikeyhash); 
xml.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); 
xml.send('name='+encodeURIComponent(title)+'&notes='+encodeURIComponent(text)+'&projects%5B0%5D='+projectid); 
alert(xml.responseText); 

(Где MYBASE64ENCODEDAPIKEYPLUSCOLON является выход из : echo -n 'MYAPIKEY:' | openssl enc -base64)

Используя это как букмарклет (доступ через панель закладок в Safari), просто приводит к обновлению текущей страницы, и нет вещь добавляется к Asana. Я был бы признателен за помощь в исправлении javascript.

Примечание: Мой идеального решения было бы всплывал диалог быстрой надстройки задач из Asana и предварительно заполнить эту форму (используя учетные данные текущего пользователя асана), но я не уверен, что если это возможно. На данный момент просто возможность быстро отправить URL, заголовок и любой выделенный текст в Asana в качестве новой задачи будет очень полезной. При наличии только нескольких пользователей создание пользовательских букмарклетов с ключом API каждого пользователя является приемлемым.

ответ

0

Я подозреваю, что если вы проверите консоль javascript в своем браузере, вы увидите, что он отклоняет запрос на межсайтовый сайт. В настоящее время API Asana не поддерживает CORS (хотя мы планируем в будущем), поэтому применяются обычные правила: вы можете отправлять запросы только на тот же хост: порт, что и на текущий веб-сайт.

Смежные вопросы