In the standard web2py authentication is triggered by @auth.requires_login decorator if the user is not authenticated already.
in model after defining a class FacebookAccount() extended from gluon.contrib.oauth20_account.OAuthAccount
auth.settings.login_form = FacebookAccount()
# change default login action
# default is auth.settings.login_url = URL('user', args='login')
auth.settings.login_url = URL(c='mycontroller', f='my_login_action', args=['login'])
in mycontroller.py:
def my_login_action():
"""same as default/login action"""
return dict(form=auth())
@auth.requires_login():
def f():
...