Запрашивание адреса электронной почты у поставщика OpenID в PHP

StackOverflow https://stackoverflow.com/questions/1723351

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

Связанный, но неадекватный, вопросы:

Это было полезно?

Решение

У Джанрейна есть Открытая библиотека PHP ID, одна из первых библиотек (я полагаю) от компании, ориентированного на OpenID. Вы упомянули о работе с Myopenid, который сайт Janrain.

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

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

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

//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);

За Обмен атрибутами Проверьте Janrain AUTH_OPENID_AX классы, в библиотеке Zend есть Запрос на функции поддержки AX.

Другие советы

Я бы посмотрел на Zend Framework's Openid Library, zend_openid. Анкет Вы должны быть в состоянии использовать его без всей структуры.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top