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