[pyar] Problema <type 'exceptions.SyntaxError'> No fields to update en Heroku con Web2py y facebook login

Leonardo M. Rocha leo.m.rocha en gmail.com
Vie Mar 8 07:59:41 ART 2013


Hola,

Estoy jugando con una APP en facebook, con Web2py y en heroku.
Todo marcha bien en general, excepto, que de vez en cuando despues de
un reinicio del server (sea porque heroku lo quiere o porque hago un
push, o sea en el server local con foreman start) cuando hago el
login, me salta:
 <type 'exceptions.SyntaxError'> No fields to update

Trace aca: http://pastebin.com/y8bseuAN

La unica forma que encontre de "solucionar" el problema es reiniciando
la DB a cero (pierdo todo :/)
Ah, esto pasa con la DB sqlite (local) y con la db postgres (en produccion)

Configuracion de mis cosas, detalles, etc:

Web2py stable, el ultimo de hace unos dias,
facebook.py actualizado de aca: https://github.com/pythonforfacebook a
la ultima version
helloFacebook example tomado de aca:
https://code.google.com/r/michelecomitini-facebookaccess

Configuracion de la DB segun la ultima moda:

from gluon.contrib.heroku import get_db
db = get_db()

Configuracion de virtualenv con los requirements.txt de pip:
argparse==1.2.1
distribute==0.6.24
gunicorn==0.17.2
psycopg2==2.4.6
requests==1.1.0
wsgiref==0.1.2

y configuracion de Procfile
para gunicorn:
web: python anyserver.py -s gunicorn -i 0.0.0.0 -p $PORT
para rocket
web: python  web2py.py -a mypass -i 0.0.0.0 -p $PORT

(el error pasa con ambos servers)

Por que tiene que hacer un update de la DB cuando hago login con OAuth2.0?
Por que se rompe si no hay campos a actualizar si en vez de eso
deberia ignorar el error y decirme, ok, no me hago drama?
Que se les ocurre que puedo intentar?

Otra cosa,

Al principio fallaba el login con Oauth y descubri que es porque la
direccion de redirect la ponia con mi IP de mi casa en vez del server
heroku.
Lo solucione cambiando
gluon/contrib/login_methods/oauth20_account.py
105        r = current.request
106        #http_host = r.env.http_x_forwarded_for #THIS was making a
problem getting my laptop address instead of my server address
107        http_host = r.env.http_host

descubri que r.env.http_x_forwarded_for 1, no es confiable (se le
puede hacer sppofing) y 2, es el cliente!! por que querria poner el
cliente en la direccion de redirect?

Si tienen una linea, se agradece!!!

Exitos

Leo



More information about the pyar mailing list