Я работаю над Canvas LMS и имею токен доступа. Мне нужно создать учетную запись пользователя, используя веб-сервис на PHP. Я пытался сделать это, используя CURL (метод post), но получил ошибку в ответ. Однако GET работает нормально.
Например, если мне нужно получить информацию о курсе и т. Д., Он работает нормально, но создание аккаунта не работает с помощью CURL (post). Ниже мой код.
$url = "https://xxxxx.com/api/v1/accounts/2/users";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' .$token ) );
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
'name' => 'vaue',
'short_name' => 'value',
'unique_id' => '1121',
));
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_ENCODING, "");
$curlData = curl_exec($curl);
curl_close($curl);
Ошибка:
stdClass Object
(
[errors] => Array
(
[0] => stdClass Object
(
[message] => An error occurred.
[error_code] => internal_server_error
)
)
[error_report_id] => 1124
)
Я решил свою проблему. Причиной «внутренней ошибки сервера» была не отправка обязательных полей. Вот обязательные поля, если кто-то должен знать.
'user[name]' => '',
'user[terms_of_use]' => 'true',
'pseudonym[unique_id]' => '',//i.e valid email
'pseudonym[send_confirmation]'=>'true'
Теперь мой запрос CURL работает нормально, и я могу успешно создать учетную запись.
Похоже, что ключи для ваших аргументов неверны. Они должны быть:
'user[name]' => 'vaue',
'user[short_name]' => 'value',
'pseudonym[unique_id]' => '1121',
Вы можете найти документы по установке холста по адресу: «https: // {ваш домен холста} /doc/api/index.html» или, если вы используете холст, размещенный в облаке, по адресу api.instructure.com.