Domanda

Qual è il modo più semplice per richiedere un indirizzo email da un provider OpenID?

Esiste una buona libreria PHP che semplifica questo problema?

So che i fornitori implementano le cose in modo diverso. Ho sentito che devi fare sia una semplice registrazione che uno scambio di attributi. Vorrei in particolare assicurarmi che funzionasse con i più grandi fornitori, come Myopenid e Google.

Domande correlate, ma inadeguate:

È stato utile?

Soluzione

Janrain ha un Open ID Libreria PHP, una delle prime biblioteche (credo) da una società incentrata ad OpenID. Hai menzionato di lavorare con Myopenid, il sito di Janrain.

Detto questo, personalmente uso la biblioteca Zend ora (ho giocato con la Biblioteca Janrain anni fa), solo perché generalmente sviluppio usando il framework Zend.

Ecco alcuni esempi di codice se il provider utilizza il Estensione di registrazione semplice aperta.

Questo sezione del riferimento zend La guida mostra come richiedere informazioni sull'utente con la richiesta di autenticazione. Ecco il loro codice di esempio modificato per le tue esigenze:

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

Realizzare lo stesso con la libreria Janrain è simile, ecco un codice tratto dal file Try_auth.php del pacchetto della libreria (l'ho modificato per mostrare le funzioni di base che stai cercando):

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

Per Scambio di attributi Dai un'occhiata al Janrain Classi auth_openid_ax, nella biblioteca Zend c'è un Richiesta di funzionalità per il supporto AX.

Altri suggerimenti

Vorrei guardare La libreria OpenID di Zend Framework, Zend_openid. Dovresti essere in grado di usarlo senza l'intero framework.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top