Проект Asana создан, но готовность к работе с ajax 0

У меня есть приложение php, которое обращается к API Asana. Я могу создать проект в Асане. Тем не менее, ajax-вызов класса API возвращает readystate = 0.

При устранении неполадок в firebug я также заметил, что сетевая консоль имеет код состояния 302, 400 (??) и 200. Я думал, что код состояния 400 связан с неверным запросом или неправильным URL, но проект все равно создается.

Любая идея?

Обновление: больше информации.

У меня есть Ajax-вызов php-файла, который перед вызовом служб API вызывает API-интерфейс Asana для получения кода и токенов getAuth.
Я полагаю, что получаю предупреждение CORS и, следовательно, readystate = 0 и ошибку 400. Однако, поскольку остальная часть моего сценария продолжается с токеном, он все равно вставлял записи. Однако после истечения срока действия токенов (3600 секунд) я не могу вставить записи. Я знаю, если я вызываю php-файл напрямую, он работает без ошибки CORS.

$.ajax({
type: 'POST',
url: "oa/asana.php",
data: {apiprovider:"asana",type:"addnewproject",notes:"notes",name:"name",id:"id",resource:"projects"},
//dataType:"json",
//contentType: "application/json",
success: function(data) {

console.log(data);
},
error: function( error )
{
console.log("asana api error");
console.log(JSON.stringify(error)) ;
},
async:true
});

мой PHP-код выглядит следующим образом.

...$asana = new AsanaAuth(API_KEY,API_SECRET,callbackUrl);

if (!isset($_GET['code'])) {
$url = $asana->getAuthorizeUrl();
header('Location:' . $url);
} else {
$asana->getAccessToken($_GET['code']);
if ($asana->hasError()) {
echo 'Error response code: ' . $asana->responseCode;
}
else {
echo $asana->response;
}
}

Есть ли лучший способ сделать это вне вызова Ajax?

0

Решение

Хорошо, вот как я это исправил. Отчасти мое понимание было неверным, и я сделал неверное предположение.

Это основано исключительно на потребностях моего приложения, и это может быть применимо не ко всем.

У меня есть страница настроек, где пользователь нажимает на приложение Asana, чтобы авторизовать соединение. Это не Ajax-вызов, а гиперссылка на файл, который также является моим URI перенаправления. В этом файле я проверяю, авторизовал ли пользователь уже, если нет, я вызываю авторизацию, получаю токены и сохраняю токен обновления в базе данных для будущего использования.

В других частях моего приложения, когда пользователь нажимает на создание проекта asana, я проверяю срок действия токена доступа, если он истек, я обновляю и снова получаю другой токен.

Ранее я пытался вызвать это с одной страницы (что в обычном пользовательском потоке никогда не произойдет — в моем приложении). Таким образом, сейчас нет вызова Ajax для авторизации, кроме вызова токена обновления, и конечные точки API Asana проходят через Ajax, и они работают нормально.

Надеюсь, это поможет кому-то в будущем.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector