示例#1
0
class MainPage(webapp2.RequestHandler):

    def get(self):
        # Build a new oauth handler and display authorization url to user.
        auth = tweepy.OAuthHandler(
            CONSUMER_KEY,
            CONSUMER_SECRET,
            CALLBACK,
            secure=True
        )
        try:
            url = auth.get_authorization_url()
            self.response.out.write(
                template.render('templates/home.html',
                                {"auth_url": url}))
        except tweepy.TweepError, e:
            # Failed to get a request token
            self.response.out.write(
                template.render('templates/error.html', {'message': e}))
            return

        # We must store the request token for later use in the callback page.
        request_token = OAuthToken(
            token_key=auth.request_token.key,
            token_secret=auth.request_token.secret
        )
        request_token.put()
示例#2
0
def authorized(provider):
    if provider in oauth_providers:
        resp = oauth_providers[provider].authorized_response()
        if resp is None:
            flash('Authorization failed.')
        else:
            raw_token = resp.get(oauth_response_keys[provider])
            session['oauth_token'] = raw_token

            token = OAuthToken.query.filter_by(provider=provider, token=raw_token).first()
            if token is None:
                user = current_user if current_user.is_authenticated else User()
                token = OAuthToken(provider=provider, token=raw_token, user=user)
                db.session.add(user)
                db.session.add(token)
                db.session.commit()
            else:
                user = token.user

            login_user(user, True)

        return redirect(request.args.get('next') or url_for('index'))
    else:
        return abort(404)