2009-10-05 7 views
8

Estoy desarrollando una aplicación Django que usa python-openid. La aplicación se está ejecutando en mi servidor de desarrollo en casa.Google OpenID/inicio de sesión federado falla periódicamente

Al igual que el mecanismo de inicio de sesión de stackoverflow, me gustaría que los usuarios inicien sesión en mi sitio web utilizando sus credenciales de Google.

El código que he implementado para hacerlo, funciona bien durante un par de semanas y luego deja de funcionar. Me quedo atrapado durante el proceso de inicio de sesión en la siguiente página de Google: https://www.google.com/accounts/o8/ud con este mensaje: "La página solicitada no es válida". Al azar comenzará a funcionar de nuevo, pero falla cada pocas semanas más o menos.

Yendo a través de inicio de sesión de Yahoo trabajaron durante meses, y hoy en día ha dejado de funcionar con el siguiente mensaje: "Esta página ha caducado, volver a la página original y por favor, inténtelo de nuevo" en esta página: https://open.login.yahooapis.com/openid/op/auth

Aquí está la solicitud, como se recoge en LiveHTTPHeaders para 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 

no estoy seguro de lo que está pasando aquí, y me gustaría un poco de ayuda.

+0

¿Falló una vez? Una y otra vez durante un día más o menos? ¿Cuáles son las circunstancias con las que comienza a funcionar de nuevo? –

+0

Tengo un problema como el tuyo. ¡pero algo mucho peor! No tengo ningún problema para iniciar sesión con el usuario, pero cada dos días, la cadena de identidad proporcionada por google debe ser un cambio único. para que los usuarios ya no puedan iniciar sesión con sus cuentas en mi sitio. No sé lo que sucede –

Respuesta

0

puede construir el uri y redirigir al usuario a la uri con el método GET. Si haces POST, google espera algunos encabezados que creo que no fueron documentos mencionados. Compruebe la solicitud sample. Intenté con GET sin python-openid, funciona bastante bien.

Cuestiones relacionadas