[PHP]ユーザーインポートAPIでCB_IJ01エラー発生について

PHPでユーザーインポートAPIを利用してcybozu.comのユーザ情報の更新を行おうとしています。
作成したプログラムを実行すると下記エラーが発生して更新ができません。
code:CB_IJ01
message:不正なJSON文字列です。
id:1505999166-1523299613

・実行環境
Windows 7 SP1
php 7.1.0

ソースを転記いたします。
何が悪いのか分かりますでしょうか?

<?php
// 対象URL
$url = “https://(自ドメイン).cybozu.com/v1/csv/user.json”;

// POSTデータの生成
$data = array(‘fileKey’ => ‘(ファイルアップロードAPIで取得した値)’);

// CURLセッションの初期化
$curl = curl_init($url);

// オプションの定義
$options = array(
 CURLOPT_HTTPHEADER => array(
  ‘X-Cybozu-Authorization: (管理者権限のユーザー情報)’,
  ‘Content-type: application/json’,
 ),

 // サーバー証明書の検証を行わない
 CURLOPT_SSL_VERIFYPEER => false,

 // メソッド:POST
 CURLOPT_POST => true,

 // 結果を文字列として受け取る
 CURLOPT_RETURNTRANSFER => true,

 // POSTデータ設定
 CURLOPT_POSTFIELDS => $data,
);

// オプション値を設定
curl_setopt_array($curl, $options);

// リクエスト実行
$result = curl_exec($curl);

// エラー情報の取得
$result_err = curl_error($curl);

// CURLセッションのクローズ
curl_close($curl);

// 結果出力 ※文字コードの変換
var_dump(mb_convert_encoding($result, “SJIS”, “UTF-8”));
?>

よろしくお願い致します。

井上 博 さん
cstapの瀧ヶ平です

CURLOPT_POSTFIELDS に設定する値は連想配列のままでは適切にJSONにパースされないので、json_encodeしてから設定する必要があるようです。おそらくそれが原因かと思います。

瀧ヶ平さん

回答ありがとうございます。基本的な部分ですね。お恥ずかしい。。

下記に修正して正しく実行ができるようになりました。ありがとうございました。


 CURLOPT_POSTFIELDS => $data,

 CURLOPT_POSTFIELDS => json_encode($data),