Есть ли рабочий пример простого скрипта CGI Net :: OpenID :: Consumer :: Lite? - PullRequest
0 голосов
/ 30 октября 2009

Я видел примеры Net :: OpenID :: Consumer :: Lite на CPAN, но я надеялся получить единственный скрипт, который использует метод POST. Если ни у кого этого нет, я опубликую свое решение здесь, как только оно заработает.

1 Ответ

3 голосов
/ 02 марта 2010

Это, кажется, единственный применимый тест в манифесте, и он не кажется слишком полезным http://cpansearch.perl.org/src/TOKUHIROM/Net-OpenID-Consumer-Lite-0.02/xt/001_mixi.t Apache2::AuthMixi также использует его немного

Этот модуль просто делегирует LWP::UserAgent. Мне не нравится, он должен подкласс LWP :: UserAgent вместо делегирования. Вы можете найти документы для LWP::UserAgent на cpan и получить доступ к базовой копии с помощью скрытого метода _ua (хотя, как правило, предшествующее подчеркивание говорит вам, что оно не поддерживается и предполагается, что оно хранится в секрете)

my $csr = Net::OpenID::Consumer::Lite->new();
$csr->_ua->post(); # same as LWP::UserAgent::post()

Кажется, что вы должны использовать только handle_server_response(), который вызывает _check_authentication(), который вызывает _get(), который делегирует ->_ua->get().

check_authentication () хочет таблицу переходов HashRef с 5 событиями для not_openid, setup_required, cancelled, verified и error. Кроме того, я считаю, что он хочет связку ключевых (openid.) префиксов и значений.

Согласно коду, для отправки запроса $request->{'openid.mode'} должен существовать в $request и быть установленным (предпочтительно) check_authentication, а не «отменять». Ключ openid.user_setup_url логически не должен быть установлен, иначе он просто вызовет соответствующий обратный вызов. Он также должен иметь набор ключей op_endpoint.endpoint, куда и направляется запрос.

Этот код не сложен для чтения, Я бы предложил посмотреть Автор также, похоже, имеет несколько модулей , что является хорошим знаком. Мне не нравятся таблицы переходов с такими данными, это кажется странным с точки зрения пользовательского интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...