OpensocialのRESTfulAPIでPUTメソッドを使うサンプル
    このエントリをはてなブックマークに登録

昨日に引き続きOpensocialネタです。

ソーシャルゲームなどを作成する際にOpensocialのRESTfulAPIを使うことがあります。

GETやPOSTの情報は、検索するとそれなりに出てきますし、サイト上にもサンプルがあったりするのですが、PUTメソッドやDELETEメソッドでの接続を要求されることがあります。
存在は何となく知っていたものの、そんなメソッドは当然使ったことはなく、検索してもサンプルも少なく困りました。

 

ということで、本日はOAuth署名付きのリクエストでPUTメソッドを送信するサンプルを公開してみます。
(国内モバイル向けのソーシャルアプリは色々と情報公開に制限があるので、差し障りの無い範囲でまとめました)

コードは、こちらのOAuth.phpに依存しています。
example内にあるコード例を参考にさせて貰いました。

→ oauth – Project Hosting on Google Code [code.google.com]

 

// アプリの設定
$id = '123456';
$consumer_key = 'abcdef';
$consumer_secret = 'uvwxyz';

// APIのURL
$end_point = 'http://example.jp/foo/bar/@app';

// パラメータ
$get_params = array('xoauth_requestor_id' => $id, 'format' => 'json');
$put_data = json_encode(array('data' => 'ほげほげ'));

$cons = new OAuthConsumer($consumer_key, $consumer_secret, NULL);
$req = OAuthRequest::from_consumer_and_token($cons, NULL, 'PUT', $end_point, $get_params);
$req->sign_request(new OAuthSignatureMethod_HMAC_SHA1(), $cons, NULL);

$url = $end_point . '?' . http_build_query($get_params);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $put_data);
$auth_header = $req->to_header();
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $auth_header));

$response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

 

curlでPUTする方法は幾つかあるようなのですが、こちらの方法が一番シンプルだったので参考にさせて貰いました。

→ PHP Manual curl_setopt (Ed Cradock氏 05-Feb-2010 06:47のコメント) [www.php.net]

 

とりあえず動作することは確認しましたが、あまり本気で使っていないため、何かツッコミがありましたらお願いします。

DELETEメソッドもこの応用でいけるのですが、それはまた後日にでもまとめたいと思います。

 

関連:


 

最近の記事







コメントを書く