2009-10-05 13 views
8

Sto sviluppando un'applicazione Django che utilizza python-openid. L'app è in esecuzione sul mio server di sviluppo a casa.Google OpenID/accesso federato periodicamente non riesce

Simile al meccanismo di accesso di stackoverflow, vorrei che gli utenti accedessero al mio sito Web utilizzando le proprie credenziali di Google.

Il codice che ho implementato per fare questo, funziona bene per un paio di settimane, e quindi smette di funzionare. Mi blocco durante la procedura di accesso alla seguente pagina Google: https://www.google.com/accounts/o8/ud con questo messaggio: "La pagina richiesta non è valida." Inizierà a lavorare in modo casuale, ma fallisce ogni poche settimane circa.

Passando attraverso login di Yahoo ha lavorato per mesi, e oggi ha smesso di funzionare con il seguente messaggio: "Questa pagina è scaduto, tornare alla pagina originale e riprova" in questa pagina: https://open.login.yahooapis.com/openid/op/auth

Ecco la richiesta, come catturata da livehttpheaders per Google:

https://www.google.com/accounts/o8/ud 

POST /accounts/o8/ud HTTP/1.1 
Host: www.google.com 
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.10) Gecko/2009042513 Ubuntu/8.04 (hardy) Firefox/3.0.10 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8  
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
Referer: http://127.0.0.1:8000/users/login/ 
Content-Length:907 
openid.ax.if_available=ext1&openid.mode=checkid_setup&openid.ns=http://specs.openid.net/auth/2.0&openid.realm=http://127.0.0.1:8000/accounts/login/&openid.return_to=http://127.0.0.1:8000/users/login/finish/?janrain_nonce=2009-10-05T19%3A10%3A11ZtioiRm&openid.ax.count.ext1=unlimited&openid.ax.mode=fetch_request&openid.sreg.optional=email&openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select&openid.ns.sreg=http://openid.net/extensions/sreg/1.1&openid.ns.ax=http://openid.net/srv/ax/1.0&openid.identity=http://specs.openid.net/auth/2.0/identifier_select&openid.assoc_handle=AOQobUcnzec0bpeZRztjqPrr5TQUA0aPL7SIuOPOMgWxex2HRAP09AyJ&openid.ax.required=ext0&openid.ax.type.ext0=http://schema.openid.net/namePerson&openid.ax.type.ext1=http://schema.openid.net/contact/web/default 

HTTP/1.x 400 Bad Request 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 

io non sono sicuro di quello che sta succedendo qui, e mi piacerebbe qualche aiuto.

+0

fallisce una volta? Più e più volte per un giorno o così? Quali sono le circostanze in cui ricomincia a funzionare? –

+0

Ho un problema come il tuo. ma alcuni quanto peggio! Non ho alcun problema con la registrazione dell'utente, ma a giorni alterni, la stringa di identità fornita da google e dovrebbe essere modifiche uniche! quindi gli utenti non possono più accedere con i loro account nel mio sito. Non so cosa succede –

risposta

0

è possibile costruire l'uri e reindirizzare l'utente all'uri con il metodo GET. Se fai POST, Google si aspetta delle intestazioni che penso non siano state citate. Controlla la richiesta sample. Ho provato con GET senza python-openid funziona abbastanza bene.

Problemi correlati