下記のようなソースでレコードを同期処理で取得しようとしているのですが,
{“message”:“不正なJSON文字列です。”,“id”:“1505999166-835548472”,“code”:“CB_IJ01”}
のようなresoponseTextが返って来てレコードを取得することができません。
何か基本的な思い違いをしているような気もするのですが,どこに問題があるのか,どなたかご教示頂けませんでしょうか。
(function () {
“use strict”;
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function (event) {
var appId = kintone.app.getId();
var reqUri = kintone.api.url('/k/v1/records') + '?app=' + appId ;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", reqUri, false);
xmlHttp.setRequestHeader('Content-Type', 'application/json');
xmlHttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
xmlHttp.send(null);
if (xmlHttp.status == 200) {
// xmlHttp.statusが400或いは520となり,ここには来ない!
}
return event;
}) ;
})();
中野様
cstapの落合です。
xmlHttp.setRequestHeader(‘Content-Type’, ‘application/json’);
を消して試してください。
落合様:
アドバイスありがとうございました。確かにこのケースではxmlHttp.setRequestHeader(‘Content-Type’, ‘application/json’);
を消すことでうまくいくようになりました。ありがとうございました。
ただ,似たようなパタンで,ユーザ情報の取得を行おうとして,url取得の部分を下記に書き換えると,やはりエラーが発生します。
var reqUri = kintone.api.url(‘/v1/users’) ;
とした場合には下記のようになって実行に失敗します。
xmlHttp.status: 520
xmlHttp.responce: {“message”:“不正なPOSTアクセスです。画面をリロードしてください。”,“id”:“1505999166-783741216”,“code”:“CB_CS01”}
/v1/users.json の場合には,/k/v1/records.json の場合とはどこか変更する必要があるのでしょうか?
重ねての質問になりますが,どなたかご教示頂けませんでしょうか。
中野様
cstapの落合です。
おそらくとしか言えない部分があるのですが、/v1/users.jsonはcybozu.com共通管理のAPIで、/k/v1/records.jsonはkintoneのAPIという違いがあるためか、不正なアクセスとなっている気がします。
xmlHttp.setRequestHeader(‘X-Cybozu-Authorization’, ‘*****************’);
と認証情報を渡せば取得できることを確認しました。
しかし、JSに認証情報を直接書くのはお勧めできません。
一応こんな感じで取得できました。参考になりますでしょうか?
var req = new XMLHttpRequest();
req.open(‘GET’, kintone.api.url(‘/v1/users’));
req.setRequestHeader(‘X-Cybozu-Authorization’, ‘*****************’);
req.send(null);
落合様:
早々にアドバイスを頂戴しましてありがとうございました。
setRequestHeader(‘X-Cybozu-Authorization’, '**')を追加したのですが,私の環境では症状は変わりませんでした。 ** の部分には,自分のcybozuへのログインアカウントとパスワードを「:」でつないだ文字列をbase64で変換したものを設定したのですが,それでよかったでしょうか?
ただ,落合様からのご指摘にもある通り,仮にこの方法でうまく行ったとしても実用には使えないと思っておりますので,user.json は使わない方法を別途考えるように致します。
ありがとうございました。
中野様
自分のcybozuへのログインアカウントとパスワードを「:」でつないだ文字列をbase64で変換したものを設定したのですが,それでよかったでしょうか?
その通りです。
仮にこの方法でうまく行ったとしても実用には使えないと思っておりますので,user.json は使わない方法を別途考えるように致します。
認証情報を載せずにできないか、私の方でも調査しておきます。