def callback(self, request): """ View that gets the oauth_token from Twitter and signs in a User. Note: You must set this callback URL in Twitter's Application Details page. Twitter ignores OAuth's oauth_callback option. """ # Ensure that the user came in through signin(). request_token = request.twitter_request_token if request_token is None: return self._redirect_to_login(request=request) # Ensure that the session's token matches Twitter's token. if request_token.key != request.GET.get('oauth_token'): remove_tokens(request) return self._redirect_to_login(request=request) # Save the access token in the session. api = TwitterApi(request_token) try: access_token = fail_whale(api.getAccessToken)() except HTTPError, e: if e.code == 401: # Restart the authentication process, as Twitter thinks # we're unauthorized. return HttpResponseRedirect(reverse('twitter_signin')) raise
def _unassociate(self, request, raw=False): """ Unassociate a TwitterUser from a User and remove tokens from session. """ user = request.user remove_tokens(request) try: screen_name = user.twitter.screen_name user.twitter.delete() del user._twitter_cache if not raw: twitter_user_unassociated.send(sender=self.__class__, user=user, screen_name=screen_name) except TwitterUser.DoesNotExist: pass