はてな認証APIをPHPで扱うサンプルコード!!

※このブログは、2008年9月現在:プログラミング歴1年のド素人プログラマーのブログです!

BattleMovieをはてな認証APIに対応する際に、色々ググってみたのですが、それらしいのがなかったので、簡単なサンプルコードを書いてみます!!

※URLの頭のhは意図的に削除しています!!リンクしちゃうので・・・。
実際使用する際は、httpの形にして下さい!!


<?php
//はてな認証APIを試してみる!!
//ttp://auth.hatena.ne.jp/auth?api_key={api_key}&api_sig={api_sig}の形式にする!
$hatena_api_key = "発行されたapi_key";
$hatena_key = "発行された秘密鍵";

//[発行された秘密鍵] + 'api_key' + [発行されたapi_key]した文字列の MD5 を取る!
$hatena_api_sig = md5($hatena_key."api_key".$hatena_api_key);
$hatena_url = "ttp://auth.hatena.ne.jp/auth?api_key=$hatena_api_key&api_sig=$hatena_api_sig";

//はてなへのリンクの作成
echo "<a href=\"$hatena_url\">はてな認証APIをテスト</a><br>\n";


//コールバックURLのパラメータを取得
if ($_SERVER["REQUEST_METHOD"] == "GET") {
$cert = htmlspecialchars($_GET["cert"], ENT_QUOTES);

//はてな認証APIを呼び出す!!
if ($cert != "") {
//ttp://auth.hatena.ne.jp/api/auth.xml?api_key=...&cert=...&api_sig=...形式でURLを作成
//api_sigを作成する [発行された秘密鍵] + 'api_key' + [発行されたapi_key] + 'cert' + [certの値] でURLを作成しmd5を取る
$hatena_api_sig = md5($hatena_key."api_key".$hatena_api_key."cert".$cert);
$hatena_url = "ttp://auth.hatena.ne.jp/api/auth.xml?api_key=$hatena_api_key&cert=$cert&api_sig=$hatena_api_sig";

//はてなにGETリクエストを送信
$result = file_get_contents($hatena_url , false, stream_context_create(array(
"http" => array(
"method" => "GET"
)
)));

//返ってきたXMLをパースし各要素を取り出す
$xml = simplexml_load_string($result);
$has_error = $xml->has_error;
$user_id = $xml->user->name;
$image = $xml->user->image_url;

//$has_errorがfalseだったら処理
if ($has_error == "false") {
echo $user_id."<br>\n";
echo $image."<br>\n";
}
}
}
?>

こんな感じで書いてみました!!

今回の場合だと、はてなへのリンクをクリックして認証後、ユーザーネームとイメージURLが返ってくれば成功です!!