Domanda

di Janrain PHP-OpenID 2.1.3 , e ho è riuscito a farlo funzionare con tutti i fornitori che ho provato ad eccezione di Google e Yahoo. La differenza principale qui sembra essere che Google e Yahoo, a differenza di molti altri fornitori, non utilizzare un URL specifico per l'utente, ma piuttosto avere il quadro scoperta utente tutto sul loro fine - che getta il quadro Janrain di default per un ciclo allora cerca di iniziare la richiesta di autenticazione.

Da quello che ho visto sembra che è probabilmente la scoperta YADIS che sta gettando l'errore, che dovrebbe essere in grado di essere bypassato dal momento che la scoperta è in testa Google o Yahoo, ma non sono sicuro. Questo è tutto un grande esperienza di apprendimento informale per me, e non ho avuto alcuna documentazione a trovare fortuna che mi può aiutare su questo. Qualche consiglio sarebbe molto apprezzato.

Modifica il problema specifico che sto avendo è che la funzione quando il begin () viene chiamato per l'URL di Google o Yahoo, ottengo un ritorno nullo. Questa funzione si trova in Auth / OpenID / Consumer.php per riferimento.

È stato utile?

Soluzione

Ok, ho finalmente avuto modo di fissare la libreria ... ho spiegato tutto qui (è anche possibile scaricare la libreria php-OpenID dopo le mie modifiche).

avevo bisogno di fare ciò che Paolo Tarjan ha suggerito, ma, anche, avevo bisogno di modificare il Auth_OpenID_detectMathLibrary e aggiungere la parola chiave static a un sacco di funzioni. Dopo di che sembra funzionare perfettamente anche se non è una soluzione ideale ... Credo che qualcuno dovrebbe riscrivere l'intera libreria in PHP 5 ...

Altri suggerimenti

Ho avuto lo stesso problema su Windows XP. Risolto attivando estensione curl. Per fare questo rimuovere il commento nel php.ini la riga

extension=php_curl.dll

rimuovendo il ; di fronte ad essa se presente. apache restart.

anche su Windows per funzionare correttamente è necessario definire Auth_OpenID_RAND_SOURCE nullo dal momento in finestre non si dispone di una fonte casuale. È possibile farlo aggiungendo la riga

define('Auth_OpenID_RAND_SOURCE', null);

nel CryptUtil.php prima della prima riga di codice

if(!defined('Auth_OpenID_RAND_SOURCE')){

Anche se l'arricciatura non è abilitato l'API deve funzionare utilizzando invece l'Auth_Yadis_PlainHTTPFetcher di Communicat via HTTP. Nel caso di Google e Yahoo è necessario https, quindi funziona solo se open_ssl è abilitato (Auth_Yadis_PlainHTTPFetcher :: supportsSSL deve restituire true).

Ho avuto esattamente lo stesso problema e mi ci sono voluti quasi 2 ore per rintracciare il problema. OpenID di Jan Pioggia lib richiede 'DOM XML o PHP domxml' (https://github.com/openid/php-openid), ma esso non verranno silenziosamente quando nessuno dei due è disponibile!

Sulla mia installazione semplice CentOS:

yum install php-xml

ha risolto il problema (sto usando questa repo: http://blog.famillecollet.com / pagine / config-en ).

Questa libreria dovrebbe funzionare con Yahoo e Google che bene. Si può vedere la demo online per questa libreria e provarlo da soli, usando "yahoo.com" o " https://www.google.com/accounts/o8/id " per verificare il lavoro svolto nei confronti di questi due PO.

Google ha lungo identificativo per digitare perché sono ancora in fase beta e non hanno spinto la loro OP identificatore di essere in un solo "google.com" ancora.

Si sta utilizzando l'esempio RP? Posso consiglio di inviare una segnalazione dettagliata al http://trac.openidenabled.com / trac / newticket? progetto = php-OpenID o un'indagine approfondita attraverso la mailing list.

Il supporto immediate_mode effettivamente funziona le librerie, se attuato correttamente. I (e altri) sarebbe anche felice di aiutarvi sul canale irc.reenode.net OpenID IRC in #openid. Il mio soprannome è flaccido.

Sono d'accordo da parte del certificato - per me l'installazione del pacchetto ca-certificates (su Debian come i sistemi: apt-get install ca-certificates) e un riavvio server web risolto il problema / yahoo google. Non la mia idea, ma invece ha suggerito su StackOverflow : -)

E 'perché non si dispone di supporto ricciolo abilitato abilitato in PHP. Senza questo, non si può ottenere contenuti https. Almeno, questo è quello che ho scoperto. Quando ho cercato di ottenere Yahoo o Google, non è riuscito con un messaggio di errore. "Errore di autenticazione, non una valida OpenID", ma quando permetto php_curl, funziona correttamente

Assicurati che il tuo server ha ricciolo con protocollo https abilitato. Ciò ha risolto per me.

discussione .

Ecco un breve script di provarlo. Carica sul vostro server allora acccess tramite il browser.

<?php
error_reporting(E_ALL);
// create curl resource
$myurl = 'https://<YOURACCOUNT>.myopenid.com';
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL, $myurl);
curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1);
$buffer = curl_exec($curl_handle);


if (empty($buffer))
{
    print "Sorry, cannot access $myurl .<p>". curl_error($curl_handle);
}
else
{
    print $buffer;
}

curl_close($curl_handle);


?>

Se restituisce "protocollo non HTTPS supportato o disabilitato in libcurl" poi si sa che cosa fare.

ho provato usando il mio account Gmail e funziona, ma conduce ad un rediret permanente 301, che ha un senso.

Ho scaricato le ultime librerie ed ottengo gli stessi risultati falliti quando si utilizza Yahoo !. Non ho provato Google.

Se provo ad usare http://www.yahoo.com ottengo un errore che dice autorizzazione fallita , ma restituisce il mio URL corretto me.yahoo.com. Se provo ad entrare usando il mio me.yahoo.com url allora ottengo un errore che dice di entrare in un URL OpenID valido.

Un'altra differenza di potenziale è che Google e Yahoo usano HTTPS e se la vostra installazione di PHP o SSL è configurato correttamente (forse manca certs CA) e poi il codice di OpenID sarà in grado di stabilire un'associazione o completare la chiamata check_authentication.

Ma senza messaggi di errore o tronchi, non posso davvero dire quale tipo di guasto si sta guardando.

Un paio di anni di ritardo, ma questo potrebbe essere rilevante per gli utenti che utilizzano Janrains PHP OpenID libreria 2.2.2 su una piattaforma Windows. Sono ancora in PHP 5.2.17.

La mia semplice test, solo per assicurarsi che la biblioteca è stata contattando Google è stato quello di utilizzare il programma esempi / discover.php, e passare Googles URL OpenID ( https://www.google.com/accounts/o8/id ).

Come per le istruzioni, i passaggi standard sono per abilitare GMP (estensione decommentare = php_gmp.dll) e CURL (decommentare extension = php_curl.dll). XML dovrebbe essere già abilitato.

Potrebbe anche essere necessario per estrarre il pacchetto in contrib / google e assicurarsi google_discovery.php e ca-bundle.crt sono in Auth / OpenID.

Il paranoico in più potrebbe iniziare con esempi / detect.php, per assicurarsi che essi hanno cose impostati correttamente. Si prevede che ci si passa tutti i test, tranne il test Cryptographic Casualità. Per questo, è necessario aggiungere

define('Auth_OpenID_RAND_SOURCE', null);

alla parte superiore di esempi / detect.php. E mentre sei lì, aggiungere che, per esempio / consumatore / common.php (in quanto esempi / discover.php lo usa).

Ora, anche dopo tutto questo, scoperta per l'URL di Google OpenID stava venendo a mancare. Mi stavo CURL error (60): SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed nel log degli errori php.

In ambiente Windows, è necessario una definizione per la CURLOPT_CAINFO. Per il mio test rapido, ho aggiunto curl_setopt($c, CURLOPT_CAINFO, dirname(__FILE__)."/../OpenID/ca-bundle.crt"); prima della curl_exec () dichiarazioni in Auth / Yadis / ParanoidHTTPFetcher.php.

Questo ha permesso gli esempi / discover.php per scoprire i servizi offerti da l'URL di Google.

Come soluzione a lungo termine per l'impostazione CURLOPT_CAINFO in Windows, come si potrebbe fare riferimento a questo StackOverflow rispondere in modo da poter aggiungere un'impostazione al vostro php.ini.

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