WP REST API (WP-API) + OAuth を試した

このエントリーを Google ブックマーク に追加
LINEで送る
Pocket

WP REST APIとOAuth Serverを入れたWordPressに対してSinatraとOAuth gemを使って記事をPOSTして公開するところまで試してハマったところは以下3点。

1)
プラグインは、git cloneで配置する。管理画面から検索してインストールしない方が良い。
oauth_signatureを生成する際に、Ruby側ではnestされたハッシュは2重にurlエンコードしているがプラグイン側ではしておらず値がマッチしない等の問題があったが今は動いている。

$ git clone git@github.com:WP-API/WP-API.git
$ git clone git@github.com:WP-API/OAuth1.git

2)
認証のコールバック時に、wp_http_validate_url を実行してコールバックURLをチェックしている箇所があるので、許可するホストを指定しておかないといけない。
指定していないと”The callback URL is invalid”が表示される。

functions.phpに

add_filter('http_request_host_is_external', 'allow_my_custom_host', 10, 3);
function allow_my_custom_host($allow, $host, $url) {
  if ($host == '*******') $allow = true;
  return $allow;
}

を追加する。
*******は、ホストのURLを入れる

3)
NginxでWP-APIを動かす場合には、confファイルの設定は以下を参考にする。
confファイルがこれとは違う内容だったのでこれに合わせた。パラメータの受け渡しなどがうまくいっていなかった。
http://wpdocs.sourceforge.jp/Nginx

参考
http://wp-api.org/