Hatena::ブログ(Diary)

konisimple log RSSフィード Twitter

はてなブログに移転しました!

2010年01月10日

LivedoorAuth認証API使ってみた

PHPでPOSTリクエストするのは始めただったけどわりかしうまくいった。

サンプル

LivedoorAuthを使ってみる - konisipmle

ソースコード

<?php
	$app_key="<APIキー>";
	$secret_key="<秘密鍵>";
	$perms="id";
	$now=time();
	$api_sig1="app_key".$app_key."perms".$perms."t".$now."v1.0";
	$api_sig1=hash_hmac("sha1",$api_sig1,$secret_key);
	$mode=false;
	if(strlen($_GET["sig"])>0){
		$mode=true;
	}
	if($mode){
		$userhash=$_GET["userhash"];
		$token=$_GET["token"];
		$t=$_GET["t"];
		$sig=$_GET["sig"];
		$api_sig2="app_key".$app_key."t".$t."token".$token."userhash".$userhash."v1.0";
		$api_sig2=hash_hmac("sha1",$api_sig2,$secret_key);
		if($api_sig2!=$sig)
			$mode=false;
		$now2=time();
		$api_sig3="app_key".$app_key."t".$now2."token".$token."v1.0";
		$api_sig3=hash_hmac("sha1",$api_sig3,$secret_key);
		$url="http://auth.livedoor.com/rpc/auth";
		$data=array(
				"app_key"=>$app_key,
				"t"=>$now2,
				"token"=>$token,
				"v"=>"1.0",
				"sig"=>$api_sig3
		);
		$options = array('http' => array(
			'method' => 'POST',
			'content' => http_build_query($data),
		));
		$json=file_get_contents($url, false, stream_context_create($options));
		$json=json_decode($json);
		if(strlen($json->user->livedoor_id)==0)
			$mode=false;
	}
?>
<?php	if(!$mode){	?>
	<h2>Livedoorで認証する</h2>
	<a href="http://auth.livedoor.com/login/?app_key=<?=$app_key?>&perms=<?=$perms?>&t=<?=$now?>&v=1.0&sig=<?=$api_sig1?>">
		<img src="150_red.gif" alt="Livedoorで認証する">
	</a>
<?php	}else{	?>
	<table class="sen">
		<tr><th>Livedoor ID</th><td><?=$json->user->livedoor_id?></td></tr>
		<tr><th>userhash</th><td><?=$userhash?></td></tr>
	</table>

参考にしたもの

とても簡単にPHPからPOSTリクエストを送信する方法【PHP】 - Programming Magic

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/konisimple/20100110/1263112081
Connection: close