Esempio n. 1
0
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")
Esempio n. 2
0
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()
Esempio n. 3
0
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}))