記事

CakePHPでOpenID対応のサイトを作ってみるも失敗

  • このエントリーをはてなブックマークに追加

とりあえず参考にさせて頂いたのは、以下のサイト。

上記サイトのDownloadから最新版をダウンロードして、サーバにアップロード。

/users/loginに自分のOpenID(例: https://id.mixi.jp/[自分のID])を入力すれば認証してくれるのですが、単純にmixi.jpと入れてもYadis(?)を使うことで認証ページに飛ばしてくれるはずが飛ばない。。。「Invalid OpenID」と表示される。

ずーっとソースを追っていくと、怪しいところを発見。
app/vendors/Auth/Yadis/Manager.phpの中のgetManager()ってメソッド。

    function getManager($force=false)
    {
        // Extract the YadisServiceManager for this object's URL and
        // suffix from the session.

        $manager_str = $this->session->get($this->getSessionKey());
        $manager = null;

        if ($manager_str !== null) {
            $loader = new Auth_Yadis_ManagerLoader();
            $manager = $loader->fromSession(unserialize($manager_str));
        }
		debug($manager);
        if ($manager && ($manager->forURL($this->url) || $force)) {
            return $manager;
        }
    }

最後の($manager->forURL($this->url) || $force)ってとこがどうも気になる。
その前のdebugでは、ちゃんと自分のOpenIDを取得出来ているのに、$manager->forURL($this->url)が通らないが為に、$managerがreturnされない。

で、そのforURLを追ってみる。

    function forURL($url)
    {
        return in_array($url, array($this->starting_url, $this->yadis_url));
    }

なんとシンプルな。
ここでの$urlは「mixi.jp」ですな。
それをin_arrayで配列の中に「mixi.jp」があるか調べて、無ければfalse。
$this->starting_urlも$this->yadis_urlも自分自身のOpenIDだから、当然falseが返る。

この処理なに???

わかる方だれか教えて下さい〜!

  • このエントリーをはてなブックマークに追加
2011年5月
« 4月   6月 »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

フォトライブラリー

コメントを残す

%d人のブロガーが「いいね」をつけました。