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 | はじめてのブログ
お世話になってます。WP投稿時”Simple Tweet: Error!!! – Could not authenticate you.”という警告が出ます。これはsettingsの際「OAuth でアカウントを承認する」処理結果で「暗証番号(PIN)」が返らないのでブランクのまま放置しているのが原因でしょうか?何か調査すべき事項があったらご教示ください。
hodaka さん、はじめまして。
Simple Tweet についてのご質問でしょうか?
それが原因です。
Twitter でアプリケーションを登録して「Consumer Key」「Consumer Secret」を取得していると思うんですが、そこの設定がうまく行ってないのでは無いかと思われます。
Twitter へのアプリケーションの登録方法は、下記 URL をご確認ください。
http://wppluginsj.sourceforge.jp/simple-tweet/simple-tweet-oauth/
ご丁寧にありがとうございました。
設定時callback urlをブランクにしましたら承認処理後PINコードが表示されましたのでご報告します。