2009-09-01 66 views
1

我正在爲公共網站實施OpenID支持。雅虎和Verisign openid身份驗證目前正常工作。但是,我似乎無法連接到Google的端點。 下面是代碼:爲什麼Net :: OpenID :: Consumer試圖抓住Google的OpenID發現端點時失敗?

常規的初始化和東西...

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"; 

...其他的東西

的錯誤是總是相同的: 網址_fetch _error:錯誤獲取URL:不發現

答:這裏有兩個奧祕。我可以直接使用LWP並從https://www.google.com/accounts/o8/id獲取XRDS文件,但沒有問題。

B.使用相同的代碼,但將端點發現url更改爲「https://me.yahoo.com」完美無缺。

如何讓我的代碼與Google一起工作?我對於爲雅虎和Verisign工作時爲什麼不爲谷歌工作感到困惑。有任何想法嗎?

回答

1

已解決。代碼沒有問題。我部署的機器是Debian Lenny。 Net :: OpenID :: Consumer的安裝版本非常舊:版本0.14。我通過CPAN將它升級到最新版本(1.03)。該代碼現在可以完美處理Google,Yahoo和Verisign OpenID端點和身份驗證。即將添加Live Mail(Hotmail)。 ;-)