Pergunta

Qual é a maneira mais simples de solicitar um endereço de e -mail de um provedor OpenID?

Existe uma boa biblioteca PHP que simplifica esse problema?

Eu sei que os provedores implementam as coisas de maneira diferente. Ouvi dizer que você precisa fazer o registro simples e a troca de atributos. Eu gostaria particularmente de garantir que ele funcionasse com os maiores fornecedores, como Myopenid e Google.

Relacionado, mas inadequado, perguntas:

Foi útil?

Solução

Janrain tem um Biblioteca Php de ID aberta, uma das primeiras bibliotecas (acredito) de uma empresa centrada no OpenID. Você mencionou trabalhar com Myopenid, que o site de Janrain.

Dito isto, pessoalmente uso a Biblioteca Zend agora (joguei com a Biblioteca Janrain anos atrás), apenas porque geralmente desenvolvo usando a estrutura Zend.

Aqui estão alguns exemplos de código se o provedor usar o Extensão de registro simples OpenID.

este Seção da referência Zend O guia mostra como solicitar informações do usuário com a solicitação de autenticação. Aqui está o código de exemplo editado para suas necessidades:

//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.");
}

Realizar o mesmo com a Biblioteca Janrain é semelhante, aqui está algum código retirado do arquivo Try_Auth.php do pacote da biblioteca (eu o editei para mostrar as funções básicas que você está procurando):

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

Por Troca de atributos Confira o Janrain AUTH_OPENID_AX CLASSES, na biblioteca Zend, há um solicitação de recurso para suporte ax.

Outras dicas

Eu olha para Biblioteca OpenID da Zend Framework, Zend_openid. Você deve poder usá -lo sem toda a estrutura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top