2009-09-01 3 views
1

Я реализую поддержку OpenID для общедоступного веб-сайта. Yahoo и Verisign openid аутентификация в настоящее время отлично работает. Однако я не могу подключиться к конечной точке Google. Ниже приведен код:Почему Net :: OpenID :: Потребитель не работает, пытаясь захватить конечную точку обнаружения 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: Ошибка выборки URL: Не Найдено

A. Здесь есть две тайны. Я могу напрямую использовать LWP и захватить файл XRDS с https://www.google.com/accounts/o8/id без каких-либо проблем.

B. Использование того же кода, но изменение URL-адреса обнаружения точки на «https://me.yahoo.com» работает отлично.

Как мне заставить мой код работать с Google? Я довольно озадачен, почему я не работаю в Google, когда он работает на Yahoo и Verisign. Есть идеи?

ответ

1

Решено. В коде нет ничего плохого. Машина, на которую я развернулась, была Debian Lenny. Установленная версия Net :: OpenID :: Consumer была действительно старой: версия 0.14. Я обновил его до последней версии (1.03) через CPAN. Код теперь обрабатывает конечные точки Google, Yahoo и Verisign OpenID и аутентификацию безупречно. Собираемся добавить Live Mail (Hotmail) в ближайшее время. ;-)

 Смежные вопросы

  • Нет связанных вопросов^_^