#php #curl #canvas-lms
#php #curl #canvas-lms
Вопрос:
Использование 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);
Я возвращаю варианты:
{«ошибки»:[{«сообщение»:»Произошла ошибка.»,»error_code»:»internal_server_error»}],»error_report_id»:2255}
Другие, очень похожие скрипты работают просто отлично (хотя ни один из них не является запросом «PUT»). Чего мне не хватает? Эти общие сообщения об ошибках действительно расстраивают.
Если синтаксис правильный, возможно, это проблема с разрешениями самого API?
Комментарии:
1. Ну, ошибка находится на конце API, и я не вижу другого варианта, кроме как попытаться связаться с ними, чтобы рассказать вам, что произошло.
Ответ №1:
Прочитайте документацию!
Поля: комментарий [text_comment] отправка [posted_grade]
Я пропустил заключенную в квадратные скобки часть…
Так и должно быть:
$post = [
'comment[text_comment]'=>$msg_body,
'submission[posted_grade]'=>$grade,
];
Помогло бы, если бы коды ошибок действительно что-то значили.
Комментарии:
1. Хорошо, хороший улов с вашей стороны. Но я бы все равно отправил им отчет об ошибке. Вы должны были получить
400 Bad Request
, желательно с сообщением, которое сообщает вам, что не так. Получение500 Internal Server Error
означает, что они неправильно обрабатывают этот случай.2. Очень ценю ваши отзывы… и сделаю это. Большая разница между Stripe и другими компаниями, которые инвестируют в то, чтобы помочь разработчикам ориентироваться в API и распространенных ошибках… и большинство других.