I haven't integrated this LinkedIn with GAE just yet. I'll see if I get the same exception when I do.
On 16 Aug 2012, at 11:45, Alec Taylor <[email protected]> wrote: > 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 <[email protected]> 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' >>>>> >>>>> >> -- >> >> >> > > -- > > > --

