I for one couldn't get the session variable to work properly, and received an error (see: https://groups.google.com/forum/#!topic/web2py/D7hwgsbBemk)
On Thu, Aug 16, 2012 at 8:38 PM, Carl <m...@carlroach.com> wrote: > Having used Udi's additions to Web2py to get basic authentication using > LinkedIn working I'd like to interact with the LinkedIn API. > > I can get to this functonality using linkedin.py (by Ozgur Vatansever) in a > controller using "auth.settings.login_form.session.linkedin" > e.g., auth.settings.login_form.session.linkedin.get_search(...) > > this "auth.settings.login_form.session.linkedin" feels rather brittle. Is > it? Is a better way to access the function get_search() ? > > > > On Wednesday, 15 August 2012 17:05:58 UTC+1, Massimo Di Pierro wrote: >> >> or to >> >> redirect(URL('user', args='login')) >> >> or to >> >> redirect(URL('user/ogin')) >> >> >> On Wednesday, 15 August 2012 08:57:20 UTC-5, Carl wrote: >>> >>> Found this code very useful! Udi's time has saved me so much time. >>> >>> One minor change I made was to user() function in default.py. >>> The redirect() calls parameters: >>> >>> change >>> redirect(URL('user', 'login')) >>> to >>> redirect(URL(f='user', args=['login',])) >>> >>> >>> >>> >>> 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' >>>> >>>> > -- > > > --