2015-02-11 2 views
0

Я использую асан API PHP класс, организованный здесь: https://github.com/ajimix/asana-api-php-classGetting кода ответа 400 при попытке создать задачу с помощью API

И я использую их почти точный образец коду:

<?php 
    // See class comments and Asana API for full info 
    $asana = new Asana(array('apiKey' => 'xxxxxxxxxxxxxxxxxxxxxxxx')); // Your API Key, you can get it in Asana 
    $workspaceId = 'XXXXXXXXXXXXXXXXXXX'; // The workspace where we want to create our task 
    $projectId = 'XXXXXXXXXXXXXXXXXXX'; // The project where we want to save our task 

    // First we create the task 
    $result = $asana->createTask(array(
     'workspace' => $workspaceId, // Workspace ID 
     'name' => 'Hello World!', // Name of task 
     'assignee' => '[email protected]', // Assign task to... 
    'followers' => array('XXXXX', 'XXXXXXXX') // We add some followers to the task... (this time by ID), this is totally optional 
)); 

    // As Asana API documentation says, when a task is created, 201 response code is sent back so... 
    if ($asana->responseCode != '201' || is_null($result)) { 
     echo 'Error while trying to connect to Asana, response code: ' . $asana->responseCode; 
     return; 
    } 

    $resultJson = json_decode($result); 
    $taskId = $resultJson->data->id; // Here we have the id of the task that have been created 
    // Now we do another request to add the task to a project 
    $result = $asana->addProjectToTask($taskId, $projectId); 
    if ($asana->responseCode != '200') { 
     echo 'Error while assigning project to task: ' . $asana->responseCode; 
    } 

Изменения, которые я сделал к этому исходному коду:

  1. Я получил мой ключ API от асан, поэтому я предполагаю, что это не должно быть ничего плохого с ним, и поместить его в индекс apiKey массива
  2. Я действительно не знаю, что такое идентификатор рабочей области, но URL моего проекта находится в формате https://app.asana.com/{integer}/{integer}/{integer}, поэтому я использовал первое целое число как $workspaceId, а второй (то же, что и третий) как $projectId. Я также попытался с помощью второго числа как как $projectId и $workspaceId с таким же исходом
  3. я поставил свою собственную асана электронную почту под индексом assignee массива в createTask() вызова
  4. я удалил элемент followers массива из createTask() вызова

Имея только эти изменения, а затем запуская этот код, я получаю Error while trying to connect to Asana, response code: 400. Никаких дополнительных пояснений кода ошибки или часто задаваемых вопросов не доступно на странице Asana. В чем может быть проблема?

ответ

0

адреса в асаны являются (как правило) формы 0/{project}/{task or project} - если вы хотите знать ваше рабочее пространство ID, вы должны GET /workspaces как текущий пользователь - это даст вам список рабочих областей текущего пользователя в, наряду с имя рабочей области и идентификатор рабочей области.

Мы возвращаем 400 Bad Request, если в запросе есть что-то не так. К сожалению, эта библиотека PHP не передает ошибку от Asana к вам :-(Однако, учитывая, что первое целое число в путь 0, который не является допустимым рабочим пространством, вероятно, будет, по меньшей мере, частью проблемы.