使う機会がありそうだなぁ、と思って試してみた。
ライブラリはPHP OpenID Libraryを使った。バージョンは2.1.1。
Zend Frameworkは1.6.0RC2現在、
@todo OpenID 2.0 (7.3) XRI and Yadis discovery
とYadisに非対応なので使えない。openid_identifierにhttp://mixi.jp/を指定してもDiscovery failed.となってしまう。
さて、PHP OpenID Libraryの使い方は、基本的にはライブラリに入っているexamplesの通りだがところどころ不要な箇所もあるので書き直してみた。
http://zuzara.com/pub/mixiopenid.phps
>demo
GMPとCURLのextensionが必要。手元のFedoraに付属しているPHP5.1.6では問題なく動いた。
examplesにあるtry_auth.phpで$auth_request->shouldSendRedirect()としている箇所があるが、mixiはOpenID2なので常にfalseになる。上記ソースではその部分は削った。
最初、既にOpenIDを使っているサイトのHTTP通信を見て参考にしようと思ったが見た目にはリダイレクトしているのに302がなくて不思議に思っていた。OpenID2では、JavaScriptのPOSTで飛ぶ、とtry_auth.phpにコメントが書かれている。htmlMarkupというメソッドでHTMLを取得して、echoするという仕組み。