WORDPRESSのWP_REST_APIでOAUTH認証

表題の通り、WORDPRESSのWP_REST_APIに対して、OAUTH認証を行う手法です。認証を行うことで、記事の投稿、編集、ユーザ登録なども行うことができます

参考にしたのはこのサイト

WORDPRESS側

WP側ではWP_REST_APIは標準搭載なので現在ではプラグインのインストールは不要です

プラグインのインストール

OAUTHサーバのプラグインのインストールを行います
プラグインの新規追加で「WP REST API – OAuth 1.0a Server」で検索して、インストールします

CONSUMERの設定

WPのダッシュボードでCONSUMERKEYなどの登録を行います。ダッシュボードの「ユーザ」配下に「Applications」があるので、そこで、登録を行います。「Save Consumer」で「Client Key」と「Clinent Secret」が取得できます

OAUTHクライアントでの作業

作成したCONSUMERの情報でOAUTH認証を行い、WP_REST_APIを操作します。「WP_CLI」で行う手法も試しましたが、SSLの証明書の設定などを改良する必要があったので、もっと簡単にPHPのOAUTHを利用します

yumでインストール

centos7でremiのPHP72を利用している場合ですが、以下のコマンドでモジュールをインストールします
「enablerepo」の箇所などは適宜読み替えてください

これでクライアント側のサーバも準備完了

リクエストトークンの取得

php-pecl-oauthを利用してリクエストトークンの取得

実行します

一時ファイルとして、「access_token.tmp」が作成されています

認証コードを取得します

上記処理で、表示されたURLにブラウザでアクセスして認証コードを取得します

「Authorize」をクリックします

画面に表示されたコードが「oauth_verifier」になります

アクセストークンの取得

取得した「oauth_verifier」の値を、setting.phpに設定します

実行します

上記に表示されたコードが「OAUTH_TOKEN」と「OAUTH_TOKEN_SECRET」となります。これでwp_reset_apiを認証付きで操作できます

wp_rest_apiの利用

wp_reset_apiを利用してWPを操作します。単純な取得であれば、oauth_tokenがなくても利用できますが、登録、編集などはトークンが必要になります。

wp_rest_apiのドキュメント

ユーザを取得

OAUTH_TOKENなどを設定ファイルに反映しておきます

ユーザ情報を取得します
/wp-json/wp/v2/users/

「?context=edit」とすることで、取得する情報を変更することができます

実行します

ユーザを登録

ユーザを登録します

/wp-json/wp/v2/users

POSTで新規登録します

実行します。WPのダッシュボードで確認するとユーザが作成されています