def Callback(request): """docstring for Callback""" verifier = request.GET.get('oauth_verifier', None) request_token = request.session['request_token'] twitter = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, request_token) # twitter=OAuthApi(CONSUMER_KEY,CONSUMER_SECRET) # access_token=twitter.getAccessToken(request_token,verifier) access_token = twitter.getAccessToken() # api=t.Api(CONSUMER_KEY,CONSUMER_SECRET,access_token['oauth_token'],access_token['oauth_token_secret']) twitter = OAuthApi(CONSUMER_KEY, CONSUMER_SECRET, access_token) # user=api.GetUserInfo() user = twitter.GetUserInfo() twitter_auth = UserMeta(user=request.user, key="oauth", value=1) twitter_auth.save() # twitter_access_token_key=UserMeta(user=request.user,key="access_token_key",value=access_token['oauth_token']) # twitter_access_token_key.save() # twitter_access_token_secret=UserMeta(user=request.user,key="access_token_secret",value=access_token['oauth_token_secret']) # twitter_access_token_secret.save() twitter_access_token_string = UserMeta(user=request.user, key="twitter_access_token_string", value=access_token.to_string()) twitter_access_token_string.save() twitter_id = UserMeta(user=request.user, key="twitter_id", value=user.id) twitter_id.save() twitter_name = UserMeta(user=request.user, key="twitter_name", value=user.name) twitter_name.save() twitter_screen_name = UserMeta(user=request.user, key="twitter_screen_name", value=user.screen_name) twitter_screen_name.save() twitter_description = UserMeta(user=request.user, key="twitter_description", value=user.description) twitter_description.save() twitter_profile_image_url = UserMeta(user=request.user, key="twitter_profile_image_url", value=user.profile_image_url) twitter_profile_image_url.save() return HttpResponseRedirect("/setting")
class OauthAccess(): CONSUMER_KEY = "atG3B3lZ6fOKshfiUr5FAMDER" CONSUMER_SECRET = "zJ52dNaHe3CHDHZahmBC7JwciUS93rFhf5pPzk79CqKZN37R1z" ACCESS_TOKEN_URL = 'https://twitter.com/oauth/access_token' mPin = "" mOauthRequestToken = "" mOauthAccessToken = "" mUser = twitter.User mTwitterApi = "" def __init__(self, pOauthRequestToken, pPin): self.mOauthRequestToken = pOauthRequestToken self.mPin = pPin def getOauthAccess(self): self.mTwitterApi = OAuthApi(self.CONSUMER_KEY, self.CONSUMER_SECRET, self.mOauthRequestToken) self.mOauthAccessToken = self.mTwitterApi.getAccessToken(self.mPin) self.mAuthenticatedTwitterInstance = OAuthApi(self.CONSUMER_KEY, self.CONSUMER_SECRET, self.mOauthAccessToken) self.mUser = self.mAuthenticatedTwitterInstance.GetUserInfo()
def twitter_return(request): """ Get the Twitter auth tokens, check them and then create all the user-related database models and subscribe to the pubsubhubbub server """ logger = get_fe_logger() logger.info('On twitter_return') if not request.session.has_key('gprofileusername'): logger.debug('User doesnt have session on twitterreturn, redirecting to /') return HttpResponseRedirect('/') request_token = request.session.get('request_token', None) if not request_token: # Redirect the user to the login page, # So the user can click on the sign-in with twitter button logger.debug('User not sent to twitter by us on twitter_return()') return HttpResponse("We didn't sent you to twitter...") token = oauth.OAuthToken.from_string(request_token) # If the token from session and token from twitter does not match # means something bad happened to tokens if token.key != request.GET.get('oauth_token', 'no-token'): del request.session['request_token'] # Redirect the user to the login page logger.debug('Tokens doesnt match for user') return HttpResponse("Something wrong! Tokens do not match...") twitter = OAuthApi(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, token) try: access_token = twitter.getAccessToken() except HTTPError: logger.warning('Access denied on twitter.getAccessToken()') return HttpResponseRedirect('/') # Somewhat clumsy to create it again, but its the way oauthapi-twitter works... twitter = OAuthApi(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, access_token) twuser = twitter.GetUserInfo() # Now that we have the Twitter account we can create all the user-related models googlename = request.session['gprofileusername'] userhash = hashlib.sha256( settings.MD5SALT + googlename).hexdigest() # SiteUser siteuser = SiteUser(userhash=userhash) siteuser.save() # GoogleProfile gprofile = GoogleProfile(username=googlename, siteuser=siteuser) gprofile.save() # Initialize lastbuffread_at to created_at - 2 minutes (so we account for server time diffs) gprofile.lastbuffread_at = gprofile.created_at - timedelta(minutes=2) logger.debug('GProfile created_at : %s' % str(gprofile.created_at)) logger.debug('GProfile lastbuff_at: %s' % str(gprofile.lastbuffread_at)) gprofile.save() # UserSettings usettings = UserSettings(siteuser=siteuser) usettings.save() logger.info('Saved new SiteUser %d [%s]' % (siteuser.id, googlename)) # TwitterAccount twname = twuser.GetScreenName() twitteraccount = TwitterAccount(name=twname, token = access_token.to_string(), siteuser=siteuser) twitteraccount.save() # Send the ticket for subscribing to the push server messenger = StompMessenger() messenger.sendmessage('/queue/listener', 'subscribefeed__%d' % gprofile.id) return render_to_response("settingsstep.html", {}, RequestContext(request, {'userhash': userhash}))