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'
>
>
>

-- 



Reply via email to