Can anyone recommend this code over that in contrib
/login_methods/linkedin_account.py ?
On Wednesday, 4 April 2012 06:49:46 UTC+1, Udi Milo wrote:
>
> 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'
>
>
>
--