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

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2011/10/08 11:59:05
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:km1981 No.1

回答回数429ベストアンサー獲得回数49

ポイント50pt

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

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

http://openpear.org/package/Auth_OpenID

id:TAK_TAK

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

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

他は変更していません。


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

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

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

2011/10/02 10:32:42
id:TransFreeBSD No.2

回答回数668ベストアンサー獲得回数268

ポイント50pt

正直良く分かりません。

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

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

あと、ライブラリの 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でエラーメッセージを残すようです。なにかログがのこってませんでしょうか?

id:TAK_TAK

$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であるようです

2011/10/08 11:39:43
  • id:TAK_TAK
    infophp()の出力を見ると
    opensslはenableになっています。
    configureに--with-opensslは入っています。

    しかし、
    http://d.hatena.ne.jp/botchy/20080220
    では、
    「Authentication error; not a valid OpenID.」
    となります。
  • id:km1981
    >ソースはリンク先の通りで、その通りの変更をして
    >他は変更していません。

    質問のソースだと
    <A href="login.php?id=https%3A%2F%2Fme.yahoo.co.jp">Yahoo でログイン</A>
    になってますけど
    ここをちゃんとしたOpenIDに変更してますか?
  • id:TAK_TAK
    どんなURLでも「OpenID が正しくありません」
    という出力です
  • id:km1981
    >どんなURLでも「OpenID が正しくありません」

    URLじゃなくて下のようにOpenIDを指定してますか?

    <A href="login.php?id=https%3A%2F%2Fme.yahoo.co.jp%2Fa%2F(あなたのOpenID)">Yahoo でログイン</A>
  • id:TAK_TAK
    もちろんこれも試しましたが同じです
  • id:TAK_TAK
    ところで、
    _php_consumer_dir/nonces
    _php_consumer_dir/temp
    _php_consumer_dir/associations
    以下には何というファイルが生成されるのでしょうか?
    ファイル名を知りたいのですが、

    こちらの環境では、ファイルが作られていないようなのですが
  • id:TAK_TAK
    $consumer = new Auth_OpenID_Consumer($store);
    $auth_request = $consumer->begin($openid);

    この、$auth_request が空であるようなので、
    それで「OpenID が正しくありません」
    の出力です







    これは、linuxで実行しています。
    PHP 5.2.4
    Apache/2.2.6
    OpenSSL 0.9.8b

    関係ないかもしれませんが
    > curl mixi.jp
    と実行すると、
    (おそらく正しい)mixiの認証ページが返ってきます
  • id:tdoi
    せっかくなのでちょっと試してみたのですが、借りてるレンタルサーバでは、
    http://newbreed-web.net/linux/39/
    こいつのせいで、動作確認できませんでした。
    なので的確なことは言えないのですが、とりあえずlibxmlのバージョンは確認してみるといいかもです。

    とりあえず自分なら、Auth/OpenID/Consumer.phpとかの中までログとか仕掛けてどこでこけてるか特定すると思います。

    何かの参考になれば。
  • id:tako80
    ここで解決が無かったので
    私も「OpenID が正しくありません」で引っかかったのでその解決を追記しときます。

    openid_sample/readme.txt を読んでその通りにしたか。
    それと決め手は cacert.pem を入れたか否かだけでした。

    http://curl.haxx.se/docs/caextract.html からはサイトが開けなくて取れなかった。
    なので
    http://jaist.dl.sourceforge.net/project/prestashop-mpay/prestashop/modules/api/
    から取得した cacert.pem で「OpenID が正しくありません」が消えてくれました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません