WordPress に OAuth プロバイダを実装する

WordPress に OAuth プロバイダ機能を追加するプラグインを作ってます。
とりあえずβ版ができたので、こちらで紹介しておきます。

現在、このプラグインでできることは。

  • アプリケーションの登録 (Consumer キーの取得)
  • Access トークンの発行
  • 発行された Consumer キー, Access トークンを使用して接続後に実行するメソッドを登録する
  • 発行された Consumer キー, Access トークンを使用して接続し、登録されたメソッドを実行して JSON データを返す

になります。

ダウンロード: WordPress > OAuth Provider « WordPress Plugins
一応 OAuth version 1.0 に対応しているので、既存の OAuth クライアントライブラリから制御できるはず。
以下、使い方。

アプリケーション( Consumer )の登録は「設定」-「OAuth Provider」から行うことができます。
ここで、Consumer Key, Consumer Secret を取得してください。

このプラグインを有効にすると以下の4つの URL に対してアクセスできるようになります。
( WordPress サイトの URL が http://example.com/ の場合 )

  • http://example.com/oauth/request_token – Request トークン発行用のURL
  • http://example.com/oauth/authorize – ユーザーによる承認用のURL
  • http://example.com/oauth/access_token – Access トークン発行用のURL
  • http://example.com/oauth/(メソッド名) – Consumer キー、Access トークンを使用して OAuth メソッドを呼び出すための URL

このプラグインで現在実装されている OAuth メソッドは、ユーザー名を返すだけの sayHello メソッドだけです。
メソッドを追加するには add_oauth_method() にメソッド名と Callback 関数を渡してやります。
Callback 関数は、以下の引数を受け付けることができます。

  • $request リクエストオブジェクト
  • $userid OAuth 認証されたユーザーのユーザーID
  • $username OAuth 認証されたユーザーの表示名

プラグインの準備ができていないと実行できないので init フィルタとかをフックして、呼び出してやったほうが良いでしょう。
こんな感じ。

function my_oauth_method($request, $userid, $username) {
	return array(
		'user-id' => $userid ,
		'user-name' => $username ,
		);
}
function add_my_oauth_method() {
	add_oauth_method( 'original_method', 'my_oauth_method' );
}
add_action('init', 'add_my_oauth_method' );

これで original_method という名前のメソッドが追加されるはずです。

こんな感じで呼び出すと JSON でデータを返してくれるはずです。

$consumer_key = '[取得した Consumer key]';
$consumer_secret = '[取得した Consumer secret]';
include 'HTTP/OAuth/Consumer.php';
$consumer = new HTTP_OAuth_Consumer($consumer_key, $consumer_secret);
$consumer->setToken('[取得した Access token]');
$consumer->setTokenSecret('[取得した Access token secret]');
$response = $consumer->sendRequest("http://example.com/oauth/original_method", array(), "POST");
echo htmlspecialchars($response->getBody());

多分、まだまだ不具合ある悪寒。

WordPress に OAuth プロバイダを実装する」への4件のフィードバック

  1. ピンバック: WordPress+OAuth | はじめてのブログ

  2. hodaka

    お世話になってます。WP投稿時”Simple Tweet: Error!!! – Could not authenticate you.”という警告が出ます。これはsettingsの際「OAuth でアカウントを承認する」処理結果で「暗証番号(PIN)」が返らないのでブランクのまま放置しているのが原因でしょうか?何か調査すべき事項があったらご教示ください。

    返信
    1. をかもと 投稿作成者

      hodaka さん、はじめまして。
      Simple Tweet についてのご質問でしょうか?

      これはsettingsの際「OAuth でアカウントを承認する」処理結果で「暗証番号(PIN)」が返らないのでブランクのまま放置しているのが原因でしょうか?

      それが原因です。
      Twitter でアプリケーションを登録して「Consumer Key」「Consumer Secret」を取得していると思うんですが、そこの設定がうまく行ってないのでは無いかと思われます。
      Twitter へのアプリケーションの登録方法は、下記 URL をご確認ください。
      http://wppluginsj.sourceforge.jp/simple-tweet/simple-tweet-oauth/

      返信
      1. hodaka

        ご丁寧にありがとうございました。
        設定時callback urlをブランクにしましたら承認処理後PINコードが表示されましたのでご報告します。

        返信

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください