• GAS(Google Apps Script)からRest API経由でWordPressのメディアにpdf画像をアップロードするために、以下のようなコードを記載しています。ところが、サイトURLを本番サーバーのものから、ステージングサーバーのものに切り替えると、エラーが出てしまいます。(401エラーです)
    本番サーバーではエラーが出ないのですが、ステージングサーバーにはベーシック認証がかかっており、エラーが出てしまうようです。ステージングサーバーはSnapUpを使っており、ステージングサーバーでテスト環境を構築したいのですが、SnapUpに問い合わせたところBasic認証の解除はできないということでした。WordPress側で対応することにより、認証を通す方法はないでしょうか?
    よろしくお願いいたします。

    function upload_media() {
    const site_url_path = 'XXXXXXXXXXXXXXX/';//サイトURL
    const user_id = 'XXX'; //WordPressのユーザーID
    const app_pass = 'XXXXXXXXXXXXXXXXXX'; // アプリケーションパスワード
    const fileId = 'XXXXXXXXXXXXXXXXXXXXXX'; // 画像ファイルのID

    // アプリケーションパスワード用の認証文字列を生成
    const base64Credentials = Utilities.base64Encode(${user_id}:${app_pass});
    const imgResponse = UrlFetchApp.fetch(
    ${DriveApp.getFileById(fileId).getDownloadUrl()}&access_token=${ScriptApp.getOAuthToken()},
    { method: 'GET' }
    );

    const apiURL = ${site_url_path}wp-json/wp/v2/media;

    const headers = {
    'Content-Type': 'application/pdf',
    'Content-Disposition': 'attachment; filename="XXXXXXXXXXXXXXX.pdf"',
    'accept': 'application/json',
    'Authorization': Basic ${base64Credentials}
    };

    const options = {
    method: 'POST',
    headers,
    payload: imgResponse.getContent(),
    muteHttpExceptions: true
    };

    try {
    // リクエストを送信
    const response = UrlFetchApp.fetch(apiURL, options);
    const { id: imageId, source_url: imagePath } = JSON.parse(response.getContentText());
    return [Number(imageId), imagePath];
    } catch (error) {
    console.error('Error:', error);
    return [null, null];
    }
    }
3件の返信を表示中 - 1 - 3件目 (全3件中)
  • モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    こんにちは。私もちょっと前に必要に迫られてREST API経由の投稿について調べていたのですが、結構難しいですよね・・・。その時に調べたストックの中から、もしかしたら本件に役立つかも?というURLを共有します。(既に見たことあるページだったらすみません)

    WP APIをBasic環境下で利用したい | 無趣味の戯言
    https://blog.udcxx.me/article/240713/wordpress-rest-api-with-basic-authorization/

    結局自分はBasic認証の必要ない環境で構築したため、実際には試していません。
    これでいけるのか個人的興味もあるので、もしよかったら試してみてください。

    トピック投稿者 gomashio7

    (@gomashio7)

    のむらけい様

    ご回答ありがとうございます。教えていただいた方法で試してみようと思ったのですが、私のほうで調べるうちに
    https://core.trac.wordpress.org/ticket/51939
    でWordPressとして、Basic認証が設定されていてアプリケーションパスワードが生成されていないサイトでは、アプリケーションパスワードの認証を行わないよう対応したことを見つけました。アプリケーションパスワードをステージングサーバーで削除して、GASのAuthentificationをステージングサーバーの認証情報に書き換えて認証してみたのですが、やはりだめでした(401エラー)。なぜなのか釈然としないのですが、のむら様も同様にこの方法を見つけられて試されたでしょうか?お聞きしたく存じます。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    @gomashio7

    返信ありがとうございます。こちらの情報は初見でした!なので試しておりません。お力になれず申し訳ないです・・・(このあたりの猛者の出現に期待します・・・)

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • このトピックに返信するにはログインが必要です。