0

我正在使用 Canvas LMS 并拥有访问令牌。我需要使用 PHP 中的 Web 服务创建一个用户帐户。我曾尝试使用 CURL(post 方法)来执行此操作,但响应时出现错误。但是 GET 工作正常。

就像我需要获取有关课程等的信息一样,它工作正常,但使用 CURL(帖子)创建帐户时不起作用。下面是我的代码。

$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
)
4

2 回答 2

1

我解决了我的问题。“内部服务器错误”的原因是未发送必填字段。如果有人需要知道,这里是必填字段。

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

现在我的 CURL 请求工作正常,我可以成功创建一个帐户。

于 2015-08-06T21:58:42.100 回答
0

看起来您的论点的键不正确。他们应该是:

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

您可以在以下位置找到适用于您的画布安装的文档:“https://{your canvas domain}/doc/api/index.html”,或者如果您使用云托管画布,请访问“api.instructure.com”

于 2015-08-05T19:59:41.183 回答