Beispiel #1
0
def add_twitter():
    user = users.get_current_user()
    if user is None:
        redirect("/login?{0}".format(
            urllib.urlencode(dict(continue_url=request.url))))
    else:
        session = request.environ.get('beaker.session')
        auth = session.get("twitter_auth")
        verifier = request.GET.get('oauth_verifier')

        if auth is not None and auth.request_token is None:
            auth = None

        twi = TwitterUser.get_by_key_name(user.email())

        auth_url = ''
        if twi is None:

            #first
            if auth is None or verifier is None:
                auth = tweepy.OAuthHandler(consumer_key, consumer_secret,
                                           request.url)
                auth_url = auth.get_authorization_url()
                session["twitter_auth"] = auth
                session.save()
                redirect(auth_url)
            else:
                try:
                    auth.get_access_token(verifier)
                except tweepy.TweepError:
                    error('Error! Failed to get access token.')

                twi = TwitterUser.get_or_insert(
                    user.email(),
                    user=user,
                    last_retweeted_id=0,
                    twitter_access_token=auth.access_token.key,
                    twitter_access_token_secret=auth.access_token.secret,
                    twitter_id=auth.get_username())

                session["twitter_auth"] = None
                session.save()

        redirect("/twitter")