前回のエントリに続いてOpenIDのテスト話。 以下はテストコードから抜粋したものです。
// Consumerを作成
$store = new Auth_OpenID_FileStore($store_path);
$consumer = new Auth_OpenID_Consumer($store);
// OpenIDの認証プロセスを開始
if (!$req = $consumer->begin($openid))
error_exit("指定されたOpenIDは無効です。");
// OpenIDプロバイダにリダイレクト
$url = $req->redirectURL($trust_root, $return_to);
if (Auth_OpenID::isFailure($url))
error_exit("リダイレクトに失敗しました。");
header("Location: ".$url);
続いて受信フェーズ
// Consumerを作成
$store = new Auth_OpenID_FileStore($store_path);
$consumer = new Auth_OpenID_Consumer($store);
// OpenIDプロバイダからの返信情報
$resp = $consumer->complete($return_to);
if ($resp->status != Auth_OpenID_SUCCESS)
error_exit("認証失敗:".$resp->status);
$openid = $resp->getDisplayIdentifier();
// 結果表示
print_html("result.html", array("msg"=>"認証成功: id=$openid"));
以上。 これで動作しています。
今回テストしてみて、初回のbegin で結構な時間を待たされるのが気になります。(特にWindows環境で顕著。PHPのmax_execution_timeを超えます) 他にもポリシーをどうするかとか、リダイレクトをformで実装する方法などを調べなくては。
余談ですが、openid.ne.jpのサイトはJanRainのserver.phpライブラリで構築されているようです。 (偶然サーバエラーを見かけて、そのファイル名がまさにこのライブラリでした…)