You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Auth0 bulk user import API提示用户文件不能为空报错

问题原因
  • 你收到Users file must not be empty报错的核心原因是手动拼接multipart/form-data请求体时,users文件字段没有填入实际的用户JSON内容:查看现有代码的CURLOPT_POSTFIELDS配置,users字段声明完Content-Type: text/json后,直接接了两个换行就到下一个请求分隔边界,服务端解析到的文件内容为空。你虽然尝试用stream_get_contents、file_get_contents读取用户文件,但没有把读取到的内容正确插入到请求体的对应位置。
  • 手动拼接multipart格式的请求体容错率极低,哪怕换行符、边界分隔符差一个字符,都会导致服务端解析失败,这类请求不需要手动构造格式。
修复方法

放弃手动拼接请求体和手动设置Content-Type头的写法,使用PHP cURL原生提供的CURLFile类实现文件上传,cURL会自动生成符合规范的multipart格式、自动填充边界值,不会出现格式错误。
调整后的可运行代码如下:

// 替换为你的实际配置值
$token = '你的Auth0 Management API访问令牌';
$userJsonPath = __DIR__ . '/你的用户列表文件.json'; // 本地用户JSON文件的绝对路径
$connectionId = '你的Auth0数据库连接ID';
$externalId = '自定义的本次导入任务标识';

$curl = curl_init();
curl_setopt_array($curl, [
  CURLOPT_URL => "https://你的Auth0域名/api/v2/jobs/users-imports",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => [
    'users' => new CURLFile($userJsonPath, 'application/json', 'users.json'),
    'connection_id' => $connectionId,
    'external_id' => $externalId,
    // 如需开启用户存在时更新的功能,可追加配置 'upsert' => 'true'
  ],
  CURLOPT_HTTPHEADER => [
    "authorization: Bearer " . $token
    // 不要手动设置Content-Type头,cURL会自动生成带正确边界的multipart/form-data头
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
注意事项
  • 确保使用的Management API令牌已开通create:users_imports权限,否则会返回权限不足错误。
  • 导入的用户JSON文件需符合格式要求:顶层为用户对象数组,单文件大小不超过500KB,单次导入用户数不超过500。
  • 若PHP版本低于5.5无法使用CURLFile,可使用'users' => '@' . realpath($userJsonPath) . ';type=application/json'的旧语法实现,但推荐升级PHP版本使用更安全的CURLFile写法。

内容的提问来源于stack exchange,提问作者Lahmer Bechir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 23:13:00