The mobile registration page allows for users to signup without an email address:
http://touch.facebook.com/r.php Paolo Il giorno lunedì 28 ottobre 2013 18:57:06 UTC+1, Lisandro ha scritto: > > I'm having a similar problem with KeyError: 'email'. > > I have a site in production that uses oauth2 and offers the possibility of > register/login using personal facebook account. > I created a Facebook app and set permissions to get user's email (so I can > create the account on my site). Everything works perfect, lots of users > have registered in my site using their Facebook accounts. Even myself. > > However, there are some error tickets created with this error of > "KeyError:email". First I thought that some users didn't let the > application get their emails, but that's not possible. When you try to log > in my site using Facebook, facebook tells you that te application will get > your email, and you only can accept or decline. If you decline, you're not > registered. And if you accept, my site gets your email and creates the > account. > > So, I don't know which could be the problem. This is the traceback of the > error: > > Traceback (most recent call last): > File "/var/www/vendosimple/gluon/restricted.py", line 212, in restricted > exec ccode in environment > File "/var/www/vendosimple/applications/init/controllers/default.py", line > 645, in <module> > File "/var/www/vendosimple/gluon/globals.py", line 194, in <lambda> > self._caller = lambda f: f() > File "/var/www/vendosimple/applications/init/controllers/default.py", line > 380, in user > form = auth() > File "/var/www/vendosimple/gluon/tools.py", line 1250, in __call__ > return getattr(self, args[0])() > File "/var/www/vendosimple/gluon/tools.py", line 2128, in login > cas_user = cas.get_user() > File "applications/init/modules/globales.py", line 41, in get_user > username=user['id'], registration_id=user['id'], email=user['email']) > KeyError: 'email' > > > Any ideas? > > > El martes, 7 de junio de 2011 01:00:33 UTC-3, Massimo Di Pierro escribió: >> >> I am not familiar with facebook email. >> >> If this (username + @facebook) is avlid email, perhaps web should set >> that even if username=True >> >> On Jun 6, 7:15 pm, "Sebastian E. Ovide" <sebastian.ov...@gmail.com> >> wrote: >> > I do not see major pros and cons... it is a matter of precerences... >> > >> > 1) setting username=True in auth.define_tables(), define_tables will >> add a >> > field on the table (username) and if that field is present, >> authentication >> > will be done using username. Personally I prefer to use emails rather >> than >> > usernames, and as I am using BOTH web2py auth and facebook at the same >> time >> > for authentication (two different links for different logins), I didn't >> want >> > to force my application to use usernames.... so I've used the second >> option >> > >> > 2) in this case I'm adding an email created by the facebook username + >> > @facebook and therefore auth will keep using email for >> authentication... >> > >> > no web2py code has been touched, although I'm extending Auth and >> > overriding navbar to display a second login link (facebook) and hide >> > change_password when it is logged in via facebook. >> > >> > if session.login_method_used is None: >> > if not 'change_password' in >> self.settings.actions_disabled: >> > bar.insert(-1, ' | ') >> > bar.insert(-1, password) >> > >> > and in my controller: >> > >> > def user(): >> > if auth.user_id: >> > if request.args[0] == 'logout': >> > session.login_method_used=None >> > else: >> > if request.args[0] == 'login': >> > session.login_method_used=None >> > elif request.args[0] == 'login_fb': >> > session.login_method_used="facebook" >> > request.args[0]='login' >> > >> > if session.login_method_used=="facebook": >> > auth.settings.login_form=FaceBookAccount(globals()) >> > >> > return dict(form=auth()) >> > >> > On Mon, Jun 6, 2011 at 11:16 PM, Massimo Di Pierro < >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > massimo.dipie...@gmail.com> wrote: >> > > if there is agreement on one, please send me a patch. >> > >> > > On Jun 6, 4:31 pm, "Sebastian E. Ovide" <sebastian.ov...@gmail.com> >> > > wrote: >> > > > Hi Mic, >> > >> > > > thanks for that. >> > >> > > > actually I've debugged web2py and figure it out for myself. There >> are two >> > > > easy ways to fix it (I've tried to add them to the book, but my >> account >> > > > doesn't allow me to edit it) >> > >> > > > 1) set username=False in auth.define_tables() >> > > > 2) add email = user['username']+"@facebook.com" in the return of >> def >> > > > get_user >> > >> > > > On Mon, Jun 6, 2011 at 10:02 PM, Michele Comitini < >> > >> > > > michele.comit...@gmail.com> wrote: >> > > > > Hi Sebastian, >> > >> > > > > copy from this example: >> > >> > > > > >> http://code.google.com/r/michelecomitini-facebookaccess/source/browse. >> > > .. >> > >> > > > > < >> > >http://code.google.com/r/michelecomitini-facebookaccess/source/browse.. >> >> > > .>and >> > > > > let me know >> > >> > > > > mic >> > >> > > > > 2011/6/6 Sebastian E. Ovide <sebastian.ov...@gmail.com> >> > >> > > > > Hi All, >> > >> > > > >> just wondering if the section "OAuth2.0 and Facebook" of the >> book is >> > > up to >> > > > >> date? >> > >> > > > >> I following it's instructions but I'm getting an "Internal >> error" >> > >> > > > >> to reproduce >> > >> > > > >> 1) get last web2py 1.196.3 >> > > > >> 2) follow the instructions from the book >> > > > >> 2.a) get facebook and place it in modules >> > > > >> 2.b) copy the code from the book >> > > > >> 2.c) replace "from facebook import GraphAPI" with "facebook = >> > > > >> local_import('facebook')" >> > > > >> 2.d) replace facebook. to GraphAPIError and GraphAPI >> > > > >> 2.e) replace YOUR_CLIENT_ID and YOUR_CLIENT_SECRET with real >> data >> > > > >> 3) set your app URL tohttp://localhost:8000/welcome/ >> > >> > > > >> Is something missing ? >> > >> > > > >> When I click login, it redirect me to facebook, where I can >> login, and >> > > > >> then it redirects me tohttp://localhost:8000/welcome/ >> > >> > > > >> At that point I get an error: >> > >> > > > >> TRACEBACK >> > >> > > > >> 1. >> > > > >> 2. >> > > > >> 3. >> > > > >> 4. >> > > > >> 5. >> > > > >> 6. >> > > > >> 7. >> > > > >> 8. >> > > > >> 9. >> > > > >> 10. >> > > > >> 11. >> > > > >> 12. >> > > > >> 13. >> > > > >> 14. >> > > > >> 15. >> > > > >> 16. >> > >> > > > >> Traceback (most recent call last): >> > >> > > > >> File "/home/sebas/Downloads/web2py/gluon/restricted.py", line >> 184, >> > > in restricted >> > >> > > > >> exec ccode in environment >> > >> > > > >> File >> > > >> "/home/sebas/Downloads/web2py/applications/welcome/controllers/default.py" >> < >> > > >> http://localhost:8000/admin/default/edit/welcome/controllers/default.py>, >> >> > > line 71, in <module> >> > >> > > > >> File "/home/sebas/Downloads/web2py/gluon/globals.py", line >> 137, in >> > > <lambda> >> > >> > > > >> / self._caller = lambda f: f() >> > >> > > > >> File >> > > >> "/home/sebas/Downloads/web2py/applications/welcome/controllers/default.py" >> < >> > > >> http://localhost:8000/admin/default/edit/welcome/controllers/default.py>, >> >> > > line 33, in user >> > >> > > > >> return dict(form=auth()) >> > >> > > > >> File "/home/sebas/Downloads/web2py/gluon/tools.py", line 1070, >> in >> > > __call__ >> > >> > > > >> return getattr(self,args[0])() >> > >> > > > >> File "/home/sebas/Downloads/web2py/gluon/tools.py", line 1626, >> in >> > > login >> > >> > > > >> user = >> > > self.get_or_create_user(table_user._filter_fields(cas_user)) >> > >> > > > >> File "/home/sebas/Downloads/web2py/gluon/tools.py", line 1360, >> in >> > > get_or_create_user >> > >> > > > >> user = self.db(table_user[username] == >> > > keys[username]).select().first() >> > >> > > > >> KeyError: 'email' >> > >> > > > >> any ideas , thanks >> > >> > > > >> -- >> > > > >> Sebastian E. Ovide >> > >> > > > -- >> > > > Sebastian E. Ovide >> > >> > -- >> > Sebastian E. Ovide > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.