Then you got a real note resting exception:
<type 'exceptions.ImportError'> No module named google.appengine.api

I didn't get this. I'm using latest Web2py.


On 16 Aug 2012, at 11:51, Alec Taylor <[email protected]> wrote:

> I'm not using GAE, I've tried to get it working on the Rocket server
> and on Red Hat's server (Apache), but both give me that same error.
> 
> On Thu, Aug 16, 2012 at 8:48 PM, Carl Roach <[email protected]> wrote:
>> 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'
>>>>>>> 
>>>>>>> 
>>>> --
>>>> 
>>>> 
>>>> 
>>> 
>>> --
>>> 
>>> 
>>> 
>> 
>> --
>> 
>> 
>> 
> 
> -- 
> 
> 
> 

-- 



Reply via email to