人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile



「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
と表示されるのですが、これは表示されている状態が正常なのでしょうか?


●質問者: tak
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● km1981
●50ポイント

プログラムにOpenIDを渡していないんじゃないですか?

ソースを見せてもらわないとどこが問題なのかわかりませんよ

http://openpear.org/package/Auth_OpenID

◎質問者からの返答

http://winofsql.jp/sh/html/openid_mixi.htm

ソースはリンク先の通りで、その通りの変更をして

他は変更していません。


少なくともリンク先の全てを試しましたが

「OpenID が正しくありません OpenID が正しくありません」

というメッセージは全く変わりません。


2 ● TransFreeBSD
●50ポイント

正直良く分かりません。

直感では外部へのアクセスが成功していないのでは?と思うのですが、コメントを読むと、特に問題もなさそうです。

ただ、下記で証明書で問題が発生している例があり、実行権限などの問題でうまく行ってないというのは可能性がありそうです。

あと、ライブラリの examples/consumer に、認証を行うサンプルがあるようなので、こちらも試してみてはいかがでしょうか。上記でもそれを利用しています。

ライブラリの動作については下記二つが詳しかったです。

2ページ目に図があるのですが、おそらくIdentifierへのアクセスでIdPを取得するまでで失敗しているのが、今回のエラーではないかと思います。

こちらでは examples/detect.php と言うのを使ってます。

あと、githubを見た感じ、 examples/discover.php でOpenID Discover、つまりIdentifierへのアクセスでIdPを取得する過程をテストしている気がします。



ついでにソースを追ってみると、Auth_OpenID_Consumer::beginAuth_OpenID_Consumer::getDiscoveryObject経由で取得したAuth_Yadis_DiscoveryのAuth_Yadis_Discovery::getNextServiceを呼び出し、ここでcall_user_funcによりAuth_OpenID_discoverをコールバック後、Auth_OpenID_discoverURIAuth_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であるようです

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ