こんにちは.
WordpressのREST APIを叩いて記事の新規投稿のできるデスクトップアプリをC#で作っています.
行き詰まっているのですが,もしかしてそもそも次の前提条件の下では不可能では…という気がしています.
前提条件として
0. アプリのユーザはWordpressの管理者.当然投稿権限を持っている
0. Wordpressのカスタム(プラグイン等)はしない
0. Apacheの設定変更,.htaccess等の編集はしない
0. WordPress 5.3.2を想定していますが,Ver依存はできるだけしたくありません
です.
REST APIの認証方法として,
0. クッキー認証
0. OAuth 認証
0. アプリケーションパスワード または ベーシック認証
があることは承知していますが,前提条件により2,3の認証方式は使用できません.
(BASIC認証はApacheによりAuthorizationヘッダがPHPに渡らないため使えませんでした.前提条件3により.htaccessの編集ができないため不可です)
そこでCookie認証を行おうと思ったのですが,Nonceで躓いています.
もしかしてユーザID,パスワードだけでは管理画面を通さないと投稿できないのでしょうか…?
TcpClientを使って,HttpClientを自作し,wp-login.phpにID,パスワードを投げ,Cookieを取得するところまではできました.
取得したCookieをヘッダに入れてREST APIに投稿データをPOSTしましたが,HTTP/1.1 401 Unauthorized
が発生します.
Nonceの生成はWordpress側で行うと思いますが,これを取得するAPIはないように思います.
自前のHttpClientでpost-new.phpにアクセスして,HTMLをパースし,block-editor
内から_wpnonce
を取り出せばできるような気もしますが,WordPressのバージョンに依存してしまうような気もします...
#質問内容まとめ
- 以上の内容から考えると,REST APIのみで投稿はNonceが取得できないから不可能 → 正か誤か
- ↑が誤であればどのようにすればよいでしょうか...
- WordPress公式アプリではユーザIDとパスワードのみで認証しているように思いますが,どのように投稿を実装しているのでしょうか
以上3点よろしくお願いします.
追記
https://wordpress.org/support/topic/cant-connect-to-wordpress-rest-api-without-a-plugin/
こちらを読む限りやはり管理画面からNonceをHTMLパースで抽出しないと不可能なように思えます......やはり無理か…
あなたの回答
tips
プレビュー