def accessToken(self): if self.session.access_token: # return the token (TODO: does it expire?) auth = OAuthHandler(self.client_id, self.client_secret); auth.set_access_token( self.session.access_token.key , self.session.access_token.secret) return auth if self.session.request_token: # Exchange the request token with an authorization token. token = self.session.request_token self.session.request_token = None auth = OAuthHandler( self.client_id, self.client_secret ) auth.set_request_token(token.key, token.secret) try: self.session.access_token = auth.get_access_token(self.request.vars.oauth_verifier) except tweepy.TweepError: print 'Error! Failed to get access token.' print self.session.access_token return auth return None
def callback(request): """ Receive the Oauth token back from Twitter """ verifier = request.GET.get('oauth_verifier') if verifier is None: response = HttpResponseRedirect(reverse('experiment_main')) return response oauth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) token = request.session.get('unauthed_token_twitterexp', None) if token is None: request.session['auth_error'] = True return HttpResponseRedirect(ROOT_URL) request.session['auth_error'] = False # remove the request token now we don't need it request.session.delete('unauthed_token_twitterexp') oauth.set_request_token(token[0], token[1]) # get the access token and store try: oauth.get_access_token(verifier) except TweepError: print 'Error, failed to get access token' request.session['auth_error'] = True return HttpResponseRedirect(ROOT_URL) request.session['access_key_twitterexp'] = oauth.access_token.key request.session['access_secret_twitterexp'] = oauth.access_token.secret api = get_api(request) twitter_user = api.me() twitter_user = add_or_update_twitter_user(twitter_user) experiment_user, user = get_or_add_user(twitter_user) user.set_password('') user = authenticate(username=twitter_user.twitter_id, password='') login(request, user) response = HttpResponseRedirect(reverse('experiment_start')) return response
def twitter_oauth_verify(request): redirect_url = reverse('landing') request_token_key = request.session.pop('request_token_key', '') request_token_secret = request.session.pop('request_token_secret', '') handler = OAuthHandler(settings.CONSUMER_KEY, settings.CONSUMER_SECRET) handler.set_request_token(request_token_key, request_token_secret) verifier = request.GET.get('oauth_verifier', '') try: handler.get_access_token(verifier) except TweepError: pass else: user = authenticate(access_token_key=handler.access_token.key, access_token_secret=handler.access_token.secret, consumer_key=settings.CONSUMER_KEY, consumer_secret=settings.CONSUMER_SECRET) login(request, user) redirect_url = request.session.pop('next', redirect_url) return redirect(redirect_url)