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.キーが一致しなくて悩んだとき、どこが悪いのか検証方法がなかったのでトライ&エラー。
※動作は保証しません
※わからなければググりましょう