【问题标题】:Asana API: Invalid Request when using task/addTag or creating a task with tagsAsana API:使用任务/addTag 或创建带有标签的任务时请求无效
【发布时间】:2017-03-22 03:26:53
【问题描述】:

我似乎无法为新任务或现有任务添加标签。

我在https://github.com/Asana/php-asana使用来自github的API

根据文档here,我设置了选项并启动了对任务端点的 API 调用。它失败了:

致命错误:在 /mydir/asana/Asana/Errors/AsanaError.php:29 中未捕获的异常“Asana\Errors\InvalidRequestError”和消息“无效请求”

    // create new task
    $newTaskOptions = array(
        'name' => $taskName,
        'notes' => $taskNotes,
        'projects' => [11111111115445],
        'tags' => [11111119991, 11111119992]   // without this, the task is created ok
    );

    $newTask = $client->tasks->create($newTaskOptions);

这是发送到request 过程的对象:

array(2) {
  ["headers"]=> array(1) {
    ["content-type"] => string(16) "application/json"
  }
  ["data"]=> array(2) {
    ["data"]=> array(4) {
      ["name"]=> string(17) "module 1 - task 1"
      ["notes"]=> string(32) "description of module 1 - task 1"
      ["projects"]=> array(1) {
        [0]=> int(11111111115445)
      }
      ["tags"]=> array(2) {
        [0]=> int(11111119991)
        [1]=> int(11111119992)
      }
    }
    ["options"]=> array(0) {
    }
  }
}

即使使用[ { id: 59746, name: 'Grade A' }, ... ] 的示例(使用正确的标签 ID 和名称),它仍然会出错。实际上,它会在第一个“{”处引发语法错误。

接下来,如果我对现有任务尝试tasks/taskid/addTag,我会收到类似的错误。下面是这段代码。

foreach ($tags as $tag){
  $newTag = $client->tasks->addTag($newTask->id, array('tag' => $tag));
}

addTag 命令的第二部分需要一个数组,并且根据文档使用tag 作为数组键。我尝试了其他键,例如 textdatatags 均无济于事。

【问题讨论】:

    标签: php api asana asana-api


    【解决方案1】:

    我看了看复制您的第一个示例,它完全适合我。 (不幸的是,我们的 API 在某些地方是不对称的,这是其中之一:发送 ID 数组是可行的方法,如您的第一个示例中所述,但您将得到的是那些嵌套的 {ID, name} 对响应。)

    我不确定您可能会遇到什么 - 我怀疑这可能是您正在使用的实际 PHP 代码之外的东西。如果 Asana 中不存在标签的 ID,我能够得到一个无效的请求错误,这可能是问题吗?

    为了解决错误,我们会在回复中发回我们希望是相当友好的消息。如果您将上面的请求代码更改为

    try {
      $newTask = $client->tasks->create($newTaskOptions);
    } catch (Asana\Errors\InvalidRequestError $e) {
      var_dump($e->response->body);
    }
    

    希望它可以帮助您了解发生了什么(即在我的复制中,我得到了)

    object(stdClass)#24 (1) {
      ["errors"]=>
      array(1) {
        [0]=>
        object(stdClass)#25 (2) {
          ["message"]=>
          string(40) "tags: [1]: Unknown object: 1980346754317"
          ["help"]=>
            string(155) "For more information on API status codes and how to handle them, read the docs on errors: https://asana.com/developers/documentation/getting-started/errors"
        }
      }
    }
    

    【讨论】:

    • 我发现了问题....标签已分配给工作区。因此,我从 workspace-1/project-1/task-1 复制到 **workspace-2**/project-1/task-1 的标签将不起作用,除非我首先在 workspace-2 中创建标签。跨度>
    【解决方案2】:

    这是问题....标签分配给工作区。因此,从workspace-1/project-1/task-1 复制到workspace-2/project-1/task-1 的标签将不起作用,除非该标签首先在workspace-2 中创建。

    在目标工作区中创建标记后,代码可以完美运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多