「OpenID が正しくありません OpenID が正しくありません」というエラー
OpenID(PHP OpenID libraryを使用)でYahoo | 教えて!goo
http://m.oshiete1.goo.ne.jp/qa/q6646345.html
おそらくこの質問なのですが、リンク先はないようです。
http://speit.blog78.fc2.com/blog-entry-39.html こちらの内容で、
http://weblog.officesoya.net/2011/04/21/openid_windows_linux/ こちらの修正は全て行っています。
google,yahooなど、どのサイトを選んでも
「OpenID が正しくありません OpenID が正しくありません」という通りの出力で
htmlソースを見ると、login_view_message.phpの内容が2回出力されています。
どこに問題があるのでしょうか?
ところで、最初にindex.php → login_view.php の時に、
Notice: Undefined index: id in login_view.php on line 15
と表示されるのですが、これは表示されている状態が正常なのでしょうか?
プログラムにOpenIDを渡していないんじゃないですか?
ソースを見せてもらわないとどこが問題なのかわかりませんよ
正直良く分かりません。
直感では外部へのアクセスが成功していないのでは?と思うのですが、コメントを読むと、特に問題もなさそうです。
ただ、下記で証明書で問題が発生している例があり、実行権限などの問題でうまく行ってないというのは可能性がありそうです。
あと、ライブラリの examples/consumer に、認証を行うサンプルがあるようなので、こちらも試してみてはいかがでしょうか。上記でもそれを利用しています。
ライブラリの動作については下記二つが詳しかったです。
2ページ目に図があるのですが、おそらくIdentifierへのアクセスでIdPを取得するまでで失敗しているのが、今回のエラーではないかと思います。
こちらでは examples/detect.php と言うのを使ってます。
あと、githubを見た感じ、 examples/discover.php でOpenID Discover、つまりIdentifierへのアクセスでIdPを取得する過程をテストしている気がします。
ついでにソースを追ってみると、Auth_OpenID_Consumer::beginでAuth_OpenID_Consumer::getDiscoveryObject経由で取得したAuth_Yadis_DiscoveryのAuth_Yadis_Discovery::getNextServiceを呼び出し、ここでcall_user_funcによりAuth_OpenID_discoverをコールバック後、Auth_OpenID_discoverURI、Auth_OpenID_discoverWithYadis、call_user_func_array経由でAuth_Yadis_Yadis::discoverときて、条件により若干流れが変わるようですが、Auth_Yadis_ParanoidHTTPFetcher::getあたりでcurlによりIdPの情報を取得している、という流れの様に思います。
ここまでくると、エラー時にerror_logでエラーメッセージを残すようです。なにかログがのこってませんでしょうか?
$endpoint = $disco->getNextService
で返って来る
$endpoint がnullです。
getNextService中の
$manager = $this->createManager($services, $yadis_url);
$manager がnullでした
createManager中の
$manager = new Auth_Yadis_Manager($this->url,$yadis_url, $services, $key);
がnullであるようです
http://winofsql.jp/sh/html/openid_mixi.htm
ソースはリンク先の通りで、その通りの変更をして
他は変更していません。
少なくともリンク先の全てを試しましたが
「OpenID が正しくありません OpenID が正しくありません」
というメッセージは全く変わりません。