Better than with easy_install :)
Almost, wsgihandler.py is reading site-packages folder.

I created site-packages folder, put httplib2 and oauth2 there, restart
apache2 and now it's working.

Thanks Michelle!

On Mon, Sep 6, 2010 at 1:09 PM, Michele Comitini <[email protected]
> wrote:

> you can try installing under site-packages in the root dir of web2py.
> I do that for running the app on GAE and it works :-)
>
> mic
>
>
> 2010/9/6 Albert Abril <[email protected]>:
> > Hi Michelle.
> > Yes, As you said, I defined it in the db.py.
> > Now, I'm having an error importing oauth2.
> > I installed python-oauth2 in webfaction with 'easy_install'.
> > But it seems like it can't import. I'll check the env.
> > On Mon, Sep 6, 2010 at 12:47 PM, Michele Comitini
> > <[email protected]> wrote:
> >>
> >> Hi Yannik,
> >>
> >> sorry for late answering...
> >>
> >> just go on http://developer.twitter.com and register an application.
> >> After that you get the CLIENT_ID and CLIENT_SECRET, TOKEN_URL and
> >> ACCESS_TOKEN_URL from twitter.
> >> define those variables in a file called twitter_oauth_data.py in
> >> modules dir under your application and keep the file *secret*.
> >> After that any user that authenticates with the application will be
> >> redirected to twitter and  twitter will let
> >> your application act on behalf of the user.  You do not have to ask
> >> any secret from the user!
> >> For more info on how twitter authenticates see http://oauth.net
> >>
> >> michele
> >>
> >> 2010/9/5 Yannick <[email protected]>:
> >> > Hello Thanks for the note.
> >> > I was using the Simple Authentication on my application to send
> >> > tweets. I just noticed that twitter no longer support it.  I guess I
> >> > have to switch to Twitter oAuth API.
> >> > I was wondering because it looks like to send tweet, each user of my
> >> > application should get a CLIENT_ID, CLIENT_SECRET  (oauth_token and
> >> > oauth_token_secret). I wonder where they will get it from ? Should
> >> > each of them have to register my application in their twitter Account
> >> > to get it ?
> >> >
> >> > Thanks for your help,
> >> > Yannick P.
> >> >
> >> >
> >> > On Aug 30, 4:00 am, Michele Comitini <[email protected]>
> >> > wrote:
> >> >> Actually if you look on developer.twitter.com, you will find some
> >> >> library that maps thetwitterREST api to
> >> >> python methods.  But I did not relay on that as it would have added
> >> >> more dependencies.
> >> >> I think that is something that you can use depending the application
> >> >> you are going to develop.
> >> >>
> >> >> Things are simple even without external libraries, look for instance
> >> >> at the get_user method in db.py, how it gets user
> >> >> info:
> http://code.google.com/r/michelecomitini-facebookaccess/source/browse...
> >> >>
> >> >>     def get_user(self):
> >> >>         if self.accessToken() is not None:
> >> >>             client =oauth.Client(self.consumer, self.accessToken())
> >> >>             resp, content =
> >> >>
> >> >> client.request('
> http://api.twitter.com/1/account/verify_credentials.json')
> >> >>             if resp['status'] != '200':
> >> >>                 # cannot get user info. should check status
> >> >>                 return None
> >> >>             u = json.loads(content)
> >> >>             return dict(username=u['screen_name'], name=u['name'],
> >> >> registration_id=u['id'])
> >> >>
> >> >> so you build a client, make a request to a REST api url
> >> >> (http://api.twitter.com/1/account/verify_credentials.json)
> >> >>
> >> >> To post a tweet see:http://dev.twitter.com/doc/post/statuses/update
> >> >>
> >> >> in your controller you should write something like this:
> >> >>
> >> >> import oauth2 asoauth
> >> >> .
> >> >> .
> >> >> .
> >> >> @auth.requires_login()
> >> >> def sendtweet():
> >> >>   token = auth.settings.login_form.accessToken() # you can use this
> >> >> also if you prefer: token=session.access_token
> >> >>   consumer =oauth.Consumer(CLIENT_ID, CLIENT_SECRET) #<- CLIENT_ID,
> >> >> CLIENT_SECRET are defined in db.py
> >> >>   client =oauth.Client(self.consumer, token)
> >> >>   # encode the message
> >> >>   message = 'My web2py post!"
> >> >>   data=urlencode(status=message)
> >> >>   #make a post
> >> >>   resp, content =
> >> >> client.request('http://api.twitter.com/1/statuses/update.json',
> >> >> "POST", body=data)
> >> >>   if resp['status'] != '200':
> >> >>     #manage the error
> >> >>     return dict(message="Could not send tweet! :-( ")
> >> >>
> >> >>   return dict(message="Succesfully sent! :-)")
> >> >>
> >> >> if you call method returning some data I suggest tu use the .json
> >> >> version of it and use
> >> >> simplejson to decode it to a python dictionary (see the get_user()
> >> >> method above)
> >> >>
> >> >> hope that helps...
> >> >> mic
> >> >>
> >> >> 2010/8/30 Albert Abril <[email protected]>:
> >> >>
> >> >> > Just a question: what do you use for post a tweet, read statuses...
> ?
> >> >> > Thanks in advance.
> >> >>
> >> >> > On Sun, Aug 29, 2010 at 12:39 PM, Albert Abril
> >> >> > <[email protected]>
> >> >> > wrote:
> >> >>
> >> >> >> :) Thank you!
> >> >>
> >> >> >> On Sun, Aug 29, 2010 at 1:45 AM, Michele Comitini
> >> >> >> <[email protected]> wrote:
> >> >>
> >> >> >>> Hello all,
> >> >>
> >> >> >>> I've uploaded a scaffolding app as example of authentication with
> >> >> >>>twitteroauth.  You can find source code here:
> >> >>
> >> >>
> >> >> >>> >>>
> https://code.google.com/r/michelecomitini-facebookaccess/source/brows...
> >> >>
> >> >> >>> Or you can clone the repository locally:
> >> >>
> >> >> >>> >>>
> https://code.google.com/r/michelecomitini-facebookaccess/source/checkout
> >> >>
> >> >> >>> as usual it is also on GAE for testing:
> >> >> >>>http://grafbook.appspot.com/helloTwitter
> >> >>
> >> >> >>> Please enjoy and send feedback.
> >> >>
> >> >> >>> tnx
> >> >> >>> michele
> >
> >
>

Reply via email to