WordPress REST APIのOAuthトークンを取得


WordPress REST APIで使用するOAuthトークンを取得するPHPプログラムを作成した。プログラムを作成したと言っても、TwitterのOAuthを取得するプログラムからエンドポイントを変更しただけでWordPress用のOAuthトークンを取得できました。

WordPress REST APIは、ユーザを認証する三種類(通常のパスワード、アプリケーションパスワード、OAuth)の方法をサポートしています。この内通常のパスワードとアプリケーションパスワードを使った方法は、通信経路が暗号化されていないHTTP://というサイトではパスワードが丸見えになってしまい危険で使用できません。

そのような場合には、OAuthを使ったユーザ認証を使用します。このOAuthを使った認証では、自分と相手のみが知っている鍵(トークン)を使って署名を作成し、その署名だけを送ります。そのため通信が覗かれても署名に使われたトークンを知られることがなく安全です。

ただしこのOAuthに使用するトークンを取得するには、WordPressを使用するサイトと何度か通信する必要があります。手動でやり取りしてトークンを取得することも可能ですが、Webサーバとブラウザがあればとても簡単です。

そこで今回は、OAuthトークンを取得するプログラムをPHPで作成し、PHPが持っているビルトインサーバを使用して走らすことでWordPress REST APIで使用するOAuthトークンを取得しました。わざわざApacheなどの本格的サーバを準備すること無くテスト用OAuthトークンを簡単に取得出来ました。

準備

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

WordPressにOAuthプラグインをインストールします。またREST APIのプラグインはOAuthトークンを取得する時に必要ないと思いますが、動作確認の時に必要なので合わせてインストールしておきます。

WordPress REST API(Version 2)は、WordPressのダッシュボード「プラグインを追加」で検索すると見つかるので、それをインストールします。登録済みOAuthプラグインに無いようなので、OAuthプラグインのページからアーカイブをダウンロードしてインストールします。

どちらもプラグインをインストールした後は、忘れずにインストールしたプラグインを 有効 にしておきます。

REST APIが有効になっているかは、次のコマンドで確認できます。

$ curl https://tech.nosuz.jp/wp-json/wp/v2/posts

これで投稿が取得できればREST APIに関しては問題ありません。

PHPとOAuthライブラリをインストール

手元のパソコンでは、Ubuntu 15.10が動いています。

まずパッケージからPHPをインストールします。

$ sudo apt install php5-cli php-pear

普通のphp5はApacheなどもインストールされてしまうので、php5-cliをインストールします。またPHPのライブラリをインストールするためにpearもインストールします。

次はOAuthライブラリのインストールですが、HTTP_OAuth1はα版とのことでインストールする時にバージョンを指定する必要があります。

$ sudo pear install HTTP_OAuth
Failed to download pear/HTTP_OAuth within preferred state "stable", latest release is version 0.3.2, stability "alpha", use "channel://pear.php.net/HTTP_OAuth-0.3.2" to install
install failed

$ sudo pear install HTTP_OAuth-0.3.2

PHPでOAuthトークンを取得するプログラム

このライブラリを使ってOAuthトークンを取得するプログラムget-oauth-token.phpを作成しました2

OAuthトークンの取得

アプリケーションの登録

まずOAuthを使用するアプリケーションを、WordPressのダッシュボードにある「ユーザー > Application」で登録します。

application

AddNewApplication

「Add New」ボタンをクリックして、アプリケーションの名前と簡単な説明、callbackアドレスを記入して「Add Consumer」ボタンをクリックすれば完了です。

EditApplication

今回手元のPHPビルトインサーバ機能を使用するので、callbackは次のように記入しました。このようにcallback先のURLは自分がアクセスできればネットに公開されていなくても大丈夫です。

http://localhost:8080/get-oauth-token.php

登録されるとOAuth Credentialsが表示されるので、Client KeyとSecretをコピーしてJSON形式で別のファイルに保管しておきます。これらの値は、プログラムにハードコードしないでファイルから読み込んで使用します。

OAuthトークンを取得

PHPビルトインサーバを起動して、上で作成したOAuthトークンを取得するプログラムへのアクセスを待ちます。ビルトインサーバを起動するには、OAuthを取得するプログラムが有るディレクトリに移動し、そこで次のコマンドを実行します。

$ php -S localhost:8080

次にブラウザからhttp://localhost/get-oauth-token.phpにアクセスすると、WordPressのユーザ認証ページにリダイレクトされます。ここで「Authorize」をクリックすると取得したOAuthトークンが表示されます。

authorize

このトークンは後で使用するので、安全なファイルに記録しておきます。

参照と脚注

  1. HTTP_OAuthを使用したのは、PHPのOAuthライブラリーを検索した時に結果の最初の方に有ったからです。まだα版ということですが、特に問題はありませんでした。

  2. このWordPress用のOAuthトークンを取得するプログラムは、APIのエンドポイントURLをWordPress用に修正したのみでTwitterのOAuthトークンを取得するプログラムと全く同じです。


「WordPress REST APIのOAuthトークンを取得」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です