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

-- 



Reply via email to