It took a while to figure out, but this is my version on how to use linkedIn in web2py, comments are much appreciated. (its very detailed and intended for people that are just starting out like me)
Enjoy! first thing, go to linkedIn.com and get your key and secret. after getting it: *1. add linkedIn.py and model.py to Modules from the python-linkedin lib* *2. add the linkedinAccount.py to modules. modify it to look like:* from gluon.http import HTTP try: import linkedin except ImportError: raise HTTP(400,"linkedin module not found") class LinkedInAccount(object): def __init__(self,request,session,key,secret,return_url): self.request = request self.session = session if self.session.linkedin is None: self.session.verified = False self.session.linkedin = linkedin.LinkedIn(key,secret,return_url, gae=True) self.session.linkedin.request_token() def verify(self, verifier): self.session.verified = verifier and self.session.linkedin.access_token(verifier = verifier) return self.session.verified def login_url(self, next="/"): return self.session.linkedin.get_authorize_url() def logout_url(self, next="/"): self.session.linkedin = None return next def get_user(self): if self.session.verified: profile = self.session.linkedin.get_profile(fields=['id', 'first-name', 'last-name','picture-url','industry']) return dict(first_name = profile.first_name, last_name = profile.last_name, picture_url = profile.picture_url, industry = profile.industry, username = profile.id) *3. add the following to your dal.py* ## LinkedIn auth.settings.actions_disabled=['register','change_password','request_reset_password','retrieve_username'] from linkedinAccount import LinkedInAccount auth.settings.login_form=LinkedInAccount( request, session, KEY, SECRET, 'http://' + request.env.http_host + '/user/verify') and just above "auth.define_tables()" add this: ## create custom field 'username' for linkedin authentication auth.settings.extra_fields['auth_user']= [ Field('username', writable=False, readable=False), Field('picture_url', writable=False, readable=False), Field('industry', writable=False, readable=False), ] *4. add the following to your default.py, the user function (clear is a debug tool, in case your session expires or you play with it and you need to remove it)* def user(): if len(request.args)>0 and request.args(0)=='verify': auth.settings.login_form.verify(request.vars.oauth_verifier) redirect(URL('user', 'login')) if request.args(0)=='clear': session.linkedin = None return 'clean'