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.

Reply via email to