MySpaceアプリでOAuth的リクエストを受けるサーバーサイドコーディング

user-pic
0
opensocial.newDataRequest のリクエストを受けるサーバーサイドのコーディング例。
まあMyspaceに限らず、HMAC-SHA1 でリクエスト受けたときは全部使えると思うよ。
regist.php などのプログラムの頭にコピペしておきましょう!


PHP5以降だと動くでしょう。
POSTの場合は、GET を POST に置換しましょう。
あと httpd.conf でやるか php.ini か忘れたけど、文字コードの設定が UTF-8 じゃないと詰まるかも。


$namikare1 = "GET";
$namikare2 = "http://".$_SERVER["SERVER_NAME"].
substr($_SERVER["REQUEST_URI"],0,strpos($_SERVER["REQUEST_URI"],"?"));
$namikare3 = ""; foreach($_GET as $key => $value) { if($key === "oauth_signature") continue; if($namikare3) $namikare3 .= "&"; $namikare3 .= rawurlencode($key)."=".rawurlencode($value); } $namikare = rawurlencode($namikare1)."&".
rawurlencode($namikare2)."&".
rawurlencode($namikare3); $gesuido = base64_encode(hash_hmac("sha1", 
$namikare, "OAuthコンシューマーシークレットの文字列"."&", 
TRUE));
if($gesuido !== $_GET["oauth_signature"]) { header('HTTP/1.0 403 Forbidden');
exit; }


ちょっと詰まった点。
1.組み立てる文字列の最後は基本的にパラメーターをABC順に並べるんだけど、oauth_signature を抜かなきゃいけないの。
2.urlencode() じゃなく rawurlencode() を使わないとスペースとかのエンコード方法が違っててダメだった。
3.キーが一致しなくて悩んだとき、どこが悪いのか検証方法がなかったのでトライ&エラー。


※動作は保証しません
※わからなければググりましょう

トラックバック(0)

トラックバックURL: http://netart.jp/blog_mt/mt-tb.cgi/53

コメントする

このブログ記事について

このページは、Net社長が2010年2月28日 13:52に書いたブログ記事です。

ひとつ前のブログ記事は「ソーシャルアプリの設計手法のあん」です。

次のブログ記事は「アプリやろうぜ!?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。