1

公開 Web サイトに OpenID サポートを実装しています。Yahoo および Verisign の openid 認証は、現在正常に動作します。ただし、Google のエンドポイントに接続できないようです。以下はコードです:

通常の初期化など...

my $csr = Net::OpenID::Consumer->new( 
        ua               => LWP::UserAgent->new(), 
        consumer_secret   => time, 
        args              => CGI->new(),
        debug              => 1, 
     ); 

my $claimed_identity = 
        $csr->claimed_identity('https://www.google.com/accounts/o8/id');


    my $check_url = $claimed_identity->check_url( 
        return_to       => "http://bla.com/openid", 
        trust_root      => "http://bla.com", 
        delayed_return  => 1, 
    ); 

    print $check_url, "\n"; 

... 他のもの

エラーは常に同じです: url _fetch_error: Error fetching URL: Not Found

A. ここには 2 つの謎があります。LWP を直接使用して、https://www.google.com/accounts/o8/idから問題なく XRDS ファイルを取得できます。

B. 同じコードを使用しますが、エンドポイント検出 URL を「https://me.yahoo.com」に変更すると、問題なく動作します。

コードを Google で動作させるにはどうすればよいですか? Yahoo や Verisign で働いているのに、なぜ Google で働いていないのか、とても困惑しています。何か案は?

4

1 に答える 1

1

解決しました。コードに問題はありません。私がデプロイしたマシンは Debian Lenny でした。インストールされている Net::OpenID::Consumer のバージョンは非常に古く、バージョン 0.14 でした。CPAN 経由で最新バージョン (1.03) にアップグレードしました。このコードは、Google、Yahoo、および Verisign の OpenID エンドポイントと認証を問題なく処理するようになりました。ライブ メール (Hotmail) を近日中に追加する予定です。;-)

于 2009-09-01T14:17:36.637 に答える