This doc is based on facebook login in web2py doc:
https://github.com/web2py/web2py/blob/master/gluon/contrib/login_methods/oauth20_account.py
- First of all you will need to get from linkedin the key and secret.
- Install python-linkedin lib: pip install python-linkedin
In the module folder create a new python file, for example linkedin.py:
from gluon.http import HTTP
try:
from linkedin.linkedin import LinkedInApplication
except ImportError:
raise HTTP(400, "linkedin module not found")
from gluon.contrib.login_methods.oauth20_account import OAuthAccount
import hashlib
import random
LK_KEY = ''
LK_SECRET = ''
LK_RETURN_URL = 'http://localhost:8000/socialSignIn/default/index'
class LinkedInAccount(OAuthAccount):
TOKEN_URL="https://www.linkedin.com/uas/oauth2/accessToken"
AUTH_URL="https://www.linkedin.com/uas/oauth2/authorization"
def __init__(self):
OAuthAccount.__init__(self, 'linkedin', LK_KEY, LK_SECRET,
self.AUTH_URL, self.TOKEN_URL,
scope='r_emailaddress',
state=self._make_new_state())
def _make_new_state(self):
return hashlib.md5(
'%s%s' % (random.randrange(0, 2 ** 63), LK_SECRET)).hexdigest()
def get_user(self):
if not self.accessToken():
return None
app = LinkedInApplication(token=self.accessToken())
profile = app.get_profile(selectors=['id', 'first-name', 'last-name', 'email-address'])
if profile:
if not profile.has_key('username'):
username = profile['id']
else:
username = profile['username']
if not profile.has_key('emailAddress'):
email = '%s.fakemail' %(profile['id'])
else:
email = profile['emailAddress']
return dict(first_name = profile['firstName'],
last_name = profile['lastName'],
username = username,
email = '%s' %(email) )
In your model db.py:
from linkedin import LinkedInAccount auth.settings.login_form=LinkedInAccount()



Comments (0)