プラグインからの内部API呼び出し

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

プラグインから、kintoneの登録ユーザ一覧を取得したい。
「保存」での入力チェック(バリデーション)で、アプリのE-mailフィールドに文字があるとき、それがkintoneの登録ユーザでなければNGの旨、表示したい。

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

kintoneの登録情報取得で、
https://xxxxx.cybozu.com/v1/csv/user.csv にGETで、headersに ‘X-Cybozu-Authorization’: xxxxxxxxx(admin権限のユーザ名:パスワードのbase64にした文字列) でアクセスしましたが、次のbodyが返却されます。

:{“code”:“CB_WA01”,“id”:“xxxxxxxx”,“message”:“ユーザーのパスワード認証に失敗しました。「X-Cybozu-Authorization」ヘッダーの値が正しくありません。”}

curlで成功し、カスタマイズjavascriptとして、axios.create、getメソッドで同じように実行すると成功します。

原因がわからず、悩んでいます。

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

    async function fetchKintoneUserEmails() {
      return new Promise((resolve, reject) => {
        // プロキシ設定の成功時に呼ばれるコールバック関数
        const successCallback = function(body, status, headers) {
          console.log('successCallback.');
          alert('successCallback.  body:'+body);
          
          // 取得したCSVデータをパースしてメールアドレスを取得
          const userEmails = body.split("\n").map(function(r) {
            return r.replace(/\"/g, "").split(",")[2]; // メールアドレスはCSVの3番目のカラムにあると仮定
          });
          
          resolve(userEmails);
        };
  
        // プロキシ設定の失敗時に呼ばれるコールバック関数
        const falseCallback = function(body, status, headers) {
          console.log('falseCallback.');
          alert('falseCallback.');
          reject(new Error('Failed to fetch user data'));
        };
  
        // プロキシ経由でKintoneのCSVデータを取得
        const login_name = "xxxxx"; // Kintoneログイン名
        const password = "xxxxx"; // Kintoneパスワード
        const base64_auth = btoa(`${login_name}:${password}`);
        kintone.plugin.app.proxy(
          PLUGIN_ID,
          'https://xxxxx.cybozu.com/v1/csv/user.csv',  // リクエストURL
          'GET',  // HTTPメソッド
          {
            'test_header':'This is test.',
            //'accept-encoding':'*',
            //'accept':'*/*',
            'X-Cybozu-Authorization': 'xxxxxxxx'  // 試験として、直接base64を入れています。実際には kintone.plugin.app.getProxyConfig により不要になる想定
          },  // ヘッダー(認証情報は自動的に含まれるため不要)
          {},  // リクエストボディ(GETリクエストでは特にデータは送らない)
          successCallback,  // 成功時のコールバック関数
          falseCallback  // 失敗時のコールバック関数
        );
        alert('PLUGIN_ID:'+PLUGIN_ID)
      });
    }

たまたまプラグインを作成中だったので、ためしに要素を最小限にして、下記ためしてみましたが僕の場合はCSVデータ取得できました
(なにか助けになるかはわからんすが :bowing_man:

kintone.plugin.app.proxy(
  "pluginid",
  "https://mydomain.cybozu.com/v1/csv/user.csv", 
  "GET", 
  {
    test_header: "This is test.",
    "X-Cybozu-Authorization":
      "*****",
  },
  {},
  (body, status, headers) => {
    // success
    console.log(status, body, headers);
  },
  (error) => {
    // error
    console.log(error);
  },
);

ご確認いただきまして、ありがとうございます。
提示頂いたコードで、pluginid、mydomain、*****、を差し替えてみたのですが同じ認証失敗のものになりました。
サンプルコードでのconfig.jsで登録状況を表示させると、登録状況が出てくるので、全部がNGというわけでもないようですが・・・
宛先をWebhook.siteにすると、ちゃんとヘッダーが届いているので、なかなか謎です。。。
(カスタムjavascriptでパスワードが見えなければいいのですが、それができないのがブラウザ実行の特徴なので悩ましいです・・・)

最低限のコードでの動作確認においても正常に動作しないことを考えると、コード上における問題ではないのかなと思っています。

IPアドレス制限などをしていると厳しいのですが、一般家庭レベルのPC・ネットワークからの動作確認は可能でしょうか? 現在確認されている環境は職場だと推察しますが、職場のプロキシ環境を通すと事象が発生するのではないかと思っています。

1 Like

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