レコード追加時にエラーが出る。

何を実現したいのかを書きましょう

あるサイトからKintoAPIを使ってレコードを追加しようとしています。
各フィールドの中にルックアップフィールドがあるのですが、その値で
エラーが出力されます。

発生した問題やエラーメッセージを具体的に書きましょう

フィールド「担当者名」の値「たなか たろう」が、ルックアップの参照先のフィールドにないか、またはアプリやフィールドの閲覧権限がありません。

実行したコードをコピー&ペーストしましょう

        "担当者名" => array(
            "value" => "たなか たろう"
        ),
        "担当者コード" => array(
            "value" => "00002"
        ),

当然ですが、担当者マスタには当該データが存在しユニークです。
また、POSTデータは対象アプリに対してのトークンを渡しており担当者マスタアプリのトークンは渡していません。
どうすれば正常に書き込めるでしょうか、ご教示ください。
本当に難しい、普通のDBの方が全然簡単ですT-T

このように複数APIトークンを使い、ルックアップ参照先のアプリのトークンも必要かとおもいます!

「いいね!」 1

ご回答ありがとうございます!
添付のサイトを確認させていただきました、こちらは例えば
【担当者名は分かるけど担当者コードはルックアップで引いてくる】
担当者名は動的で、コードを算出するために使う。ものだと理解しました。
今回のプログラムにおいて、担当者名はとコードは固定なので値を引いてくる必要はないのですが、エラー内容が【アプリやフィールドの閲覧権限がありません。】とあるので、APIの中でルックアップを実行しようとしてエラーが出てるように見えます。

ここで、サイトの上部の説明のように【‘X-Cybozu-API-Token:対象アプリ,担当者アプリ’】を使えば対象アプリと担当者マスタアプリの双方が使えるものと実行したら以下のエラーが出ました。

【指定したAPIトークンは、アプリで生成されたトークンと異なります。アプリのAPIトークンの設定を確認してください。設定が正しい場合、APIトークンの設定がアプリに反映されていない場合があります。アプリの設定を更新し、APIトークンの設定をアプリに反映します。】
添付サイトのコメントには、「APIトークンをカンマで連結すると、
どのアプリ宛にもリクエストを投げられる」と記載があるのですが、ダメでした、、

実際のコードを記します、お願いです助けてくださいT-T


$body= array(
    "app" => 400, // 対象アプリのID
    "record" => array(
        "種別" => array(
            "value" => "スケジュール"
        ),
        "表示用タイトル" => array(
            "value" => "予約"
        ),
        "開始日時" => array(
            "value" => ""
        ),
        "終了日時" => array(
            "value" => ""
        ),
        "担当者名" => array(
            "value" => "たなか たろう"
        ),
		"担当者コード" => array(
            "value" => "00002"
        ),
        "色" => array(
            "value" => "来事"
        ),
        "メモ" => array(
            "value" => "てすと"
        ),
    )
);


$headers = [
   "Authorization: Basic " . base64_encode("basic:basic").
   "X-Cybozu-Authorization: " . base64_encode("test:test"),
   'X-Cybozu-API-Token:対象トークン,マスタトークン',
   'Content-Type: application/json'
];

// JSONに変換
$json = json_encode($body);

// 初期化
$curl = curl_init(BaseUrl);

curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);

$response = curl_exec($curl);

m(_ _)m

【指定したAPIトークンは、アプリで生成されたトークンと異なります。アプリのAPIトークンの設定を確認してください。設定が正しい場合、APIトークンの設定がアプリに反映されていない場合があります。アプリの設定を更新し、APIトークンの設定をアプリに反映します。】

このエラーに対してはどうでしょうか、トークンの権限がなかったり、アプリの設定の保存がされてなかったりは実際有り得そうです。(ご確認いただいてるかもですが)

あと、影響あるかわかりませんが、
今回APItoken認証なので、下記は不要な気がしますね

   "X-Cybozu-Authorization: " . base64_encode("test:test"),

(逆に言えば問題の切り分けのために、APIトークン認証はあえて使わず、 X-Cybozu-Authorization で指定するユーザーを両方のアプリの権限もたせた上で動作はするかなど試してみる、のもいいかもですね)

「いいね!」 1

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。