0

使用 Canvas API 通过以下 PHP 更新评论和反馈:

$token_url = 'https://' . $lti_base_url . '.instructure.com/api/v1/courses/' . $course_id . '/assignments/' . $assign_id . '/submissions/' . $user_id;
// var_dump($token_url);
$header = array("Authorization: Bearer {$token}");

$post = [
  'comment'=>$msg_body,
    'submission'=>$grade,
];

$curl = curl_init($token_url);

curl_setopt($curl,CURLOPT_CUSTOMREQUEST,"PUT");
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

curl_setopt($curl, CURLOPT_HTTPHEADER,$header);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl,CURLOPT_POSTFIELDS,$post);

$lti_msgresponse = curl_exec($curl);
curl_close($curl);

我得到了以下变化:

{"errors":[{"message":"发生错误。","error_code":"internal_server_error"}],"error_report_id":2255}

其他非常相似的脚本工作得很好(尽管没有一个是“PUT”请求)。我错过了什么?这些通用错误消息真的令人沮丧。

如果语法正确,可能是 API 本身的权限问题?

4

1 回答 1

0

阅读文档!

字段是:comment[text_comment] submit[posted_grade]

我省略了括号中的部分...

所以应该是:

$post = [
  'comment[text_comment]'=>$msg_body,
    'submission[posted_grade]'=>$grade,
];

如果错误代码实际上意味着什么,将会有所帮助。

于 2020-11-20T15:41:27.280 回答