Asana API:使用 task/addTag 或使用标签创建任务时请求无效
Asana API: Invalid Request when using task/addTag or creating a task with tags
我似乎无法为新任务或现有任务添加标签。
我在 https://github.com/Asana/php-asana
使用 github 的 API
根据文档 here,我设置了选项并启动了对任务端点的 API 调用。它失败了:
致命错误:/mydir/asana/Asana/Errors/AsanaError 中的消息 'Invalid Request' 未捕获异常 'Asana\Errors\InvalidRequestError'。php:29
// 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
作为数组键。我尝试了其他键,例如 text
或 data
或 tags
无济于事。
我看了看重现你的第一个例子,它完全适合我。 (不幸的是,我们的 API 在某些地方是不对称的,这是其中之一:发送 ID 数组是要走的路,如您的第一个示例所示,但您将得到的是那些嵌套的 {ID, name}
对在响应中。)
我不确定您可能 运行 喜欢什么 - 我怀疑这可能是您使用的实际 PHP 代码之外的东西。如果标签的 ID 在 Asana 中不存在,我能够得到一个无效的请求错误抛出,这可能是问题所在吗?
为了解决错误,我们希望在响应中发回一条相当友好的消息。如果您将上面的请求代码更改为
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.
中创建
一旦在目标工作区中创建了标签,代码就可以完美运行。
我似乎无法为新任务或现有任务添加标签。
我在 https://github.com/Asana/php-asana
使用 github 的 API根据文档 here,我设置了选项并启动了对任务端点的 API 调用。它失败了:
致命错误:/mydir/asana/Asana/Errors/AsanaError 中的消息 'Invalid Request' 未捕获异常 'Asana\Errors\InvalidRequestError'。php:29
// 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
作为数组键。我尝试了其他键,例如 text
或 data
或 tags
无济于事。
我看了看重现你的第一个例子,它完全适合我。 (不幸的是,我们的 API 在某些地方是不对称的,这是其中之一:发送 ID 数组是要走的路,如您的第一个示例所示,但您将得到的是那些嵌套的 {ID, name}
对在响应中。)
我不确定您可能 运行 喜欢什么 - 我怀疑这可能是您使用的实际 PHP 代码之外的东西。如果标签的 ID 在 Asana 中不存在,我能够得到一个无效的请求错误抛出,这可能是问题所在吗?
为了解决错误,我们希望在响应中发回一条相当友好的消息。如果您将上面的请求代码更改为
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.
中创建一旦在目标工作区中创建了标签,代码就可以完美运行。