2015-08-05 2 views
0

Я работаю над Canvas LMS и имею токен доступа. Мне нужно создать учетную запись пользователя, используя веб-службу в PHP. Я попытался сделать это, используя CURL (post method), но получив ошибку в ответе. Однако GET работает нормально.Создание учетной записи API LMS приводит к ошибке

Как и в случае необходимости получения информации о курсе и т. Д., Он работает нормально, но создание учетной записи не работает с использованием 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 
) 

ответ

0

Похоже, что ключи для ваших аргументов неверны. Они должны быть:

'user[name]' => 'vaue', 
'user[short_name]' => 'value', 
'pseudonym[unique_id]' => '1121', 

Вы можете найти документацию для вашего холста установить на: «https: // {вашего холст домен} /doc/api/index.html» или если вы используете облако размещенного холст на «api.instructure.com»

+0

Спасибо Nathan за предложение, но, к сожалению, 'пользователь [имя]' => 'vaue', не работает. документация для облачного хостинга и самостоятельного размещения такая же, и я уже проверяю. у них просто есть .... POST/api/v1/accounts /: account_id/users –

+0

Натан, вы уверены в косых апострофах? – halfer

+0

спасибо, я исправил их. – Nathan

1

Я решил свою проблему. Причина «внутренней ошибки сервера» не отправляла необходимые поля. Вот требуемые поля, если кто-то должен знать.

'user[name]' => '', 
'user[terms_of_use]' => 'true', 
'pseudonym[unique_id]' => '',//i.e valid email 
'pseudonym[send_confirmation]'=>'true' 

Теперь мой запрос CURL работает нормально и я могу успешно создать учетную запись.

Смежные вопросы