Запрос адреса электронной почты от провайдера OpenID в PHP - PullRequest
3 голосов
/ 12 ноября 2009

Какой самый простой способ запросить адрес электронной почты у провайдера OpenID?

Есть ли хорошая библиотека PHP, которая упрощает эту проблему?

Я знаю, что провайдеры реализуют вещи по-другому. Я слышал, что вам нужно сделать как простую регистрацию, так и обмен атрибутами. Я бы особенно хотел убедиться, что он работает с крупнейшими провайдерами, такими как MyOpenID и Google.

Смежные, но неадекватные вопросы:

Ответы [ 2 ]

2 голосов
/ 12 ноября 2009

JanRain имеет Open ID PHP Library , одну из первых (я полагаю) библиотек от компании, ориентированной на OpenID. Вы упомянули работу с MyOpenID, который находится на сайте JanRain.

Тем не менее, лично я сейчас пользуюсь библиотекой Zend (я играл с библиотекой JanRain много лет назад), просто потому, что я обычно разрабатываю с использованием Zend Framework.

Вот несколько примеров кода, если провайдер использует расширение простой регистрации OpenID .

В этом разделе справочника Zend Reference показано, как запрашивать информацию пользователя с помощью запроса аутентификации. Вот их пример кода, отредактированный для ваших нужд:

//require e-mail, get nickname and fullname if available
$sreg = new Zend_OpenId_Extension_Sreg(array(
    'nickname'=>false,
    'email'=>true,
    'fullname'=>false), null, 1.1);
$consumer = new Zend_OpenId_Consumer();
if (!$consumer->login($openid, $returnUrl, null, $sreg)) {
    die("OpenID login failed.");
}

Выполнение того же с библиотекой JanRain аналогично, вот некоторый код, взятый из файла try_auth.php пакета библиотеки (я отредактировал его, чтобы показать основные функции, которые вы ищете):

$auth_request = $consumer->begin($openid);
$sreg_request = Auth_OpenID_SRegRequest::build(
                                 // Required
                                 array('email'),
                                 // Optional
                                 array('fullname', 'nickname'));
$auth_request->addExtension($sreg_request);

Для Атрибут Exchange посмотрите классы JanRain Auth_OpenID_AX , в библиотеке Zend есть запрос для поддержки AX .

1 голос
/ 12 ноября 2009

Я бы посмотрел на Библиотеку OpenID Zend Framework, Zend_OpenID . Вы должны иметь возможность использовать его без всей структуры.

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