def twitterAuthCredential(request, state): try: consumer = oauth.Consumer( key=TWITTER_CONSUMER_KEY, secret=TWITTER_CONSUMER_SECRET) #@UndefinedVariable request_token_url = 'https://twitter.com/oauth/request_token' client = oauth.Client(consumer) #@UndefinedVariable client.ca_certs = certifi.where() resp, content = client.request(request_token_url, 'GET') content_dict = content.split('&') request.session['tw_oauth_token_secret'] = content_dict[1].split( '=')[1] request.session['twitter_request_state'] = state request.session.modified = True localprint(request, 'token_secret=' + request.session['tw_oauth_token_secret']) oauth_token = content_dict[0].split('=')[1] localprint(request, content) twitter_oauth_url = 'https://api.twitter.com/oauth/authenticate?oauth_token=' + oauth_token #return HttpResponse('<script type="text/javascript>document.location.href="'+twitter_oauth_url+'";</script>') return HttpResponseRedirect(twitter_oauth_url) #webbrowser.open(twitter_oauth_url, new=1, autoraise=True) except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def forgotPasswordMail(request): try: if ('reset_token' in request.session) and ('reset_email' in request.session): reset_token = request.session['reset_token'] subject = 'Ttagit.com forgotten password email verification.' email_message = 'Verify your email address by following this link:\n https://' + request.get_host( ) + '/fpverify/' + reset_token localprint(request, email_message) to_address = request.session['reset_email'] showPopup = True send_mail(subject, email_message, FROM_ADDRESS, [to_address], fail_silently=True) return render_to_response( 'forgot_checkemail.html' if not request.is_ajax() else 'partial_forgot_checkemail.html', locals(), context_instance=RequestContext(request)) else: ## cannot send email without reset_token and reset_email return HttpResponse( 'Cannot send email without reset_token and reset_email') except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def googleLoginCredential(request, state): try: endpoint = 'https://accounts.google.com/o/oauth2/auth?' response_type = 'response_type=code&' client_id = 'client_id=' + GOOGLE_CLIENT_ID redirect_uri = 'redirect_uri=' + GOOGLE_CALLBACK_URL + '&' scope = 'scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https://www.google.com/m8/feeds&' state = 'state=' + state + '&' accessTokenURL = endpoint + scope + state + redirect_uri + response_type + client_id localprint(request, accessTokenURL) return HttpResponseRedirect(accessTokenURL) except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def location(request, ttag_id): try : thereturn = HttpResponse(mark_safe('<p>This section of the website is currently under construction. Check back soon!</p>')); start_time = '0' if 'start_time' not in request.GET else request.GET['start_time'] location_type = 'geo' loggedin, data = ttagServiceAuth(request) if loggedin : response = ttagPost('/ttag/get',{'ttag_id':ttag_id,'search_on':'ttag'}) localprint(request,response) return thereturn; except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def googleLoginCredential(request, state): try : endpoint = 'https://accounts.google.com/o/oauth2/auth?' response_type = 'response_type=code&' client_id = 'client_id='+GOOGLE_CLIENT_ID redirect_uri = 'redirect_uri='+GOOGLE_CALLBACK_URL+'&' scope = 'scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https://www.google.com/m8/feeds&' state = 'state='+state+'&' accessTokenURL = endpoint + scope + state + redirect_uri + response_type + client_id localprint(request, accessTokenURL) return HttpResponseRedirect(accessTokenURL) except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def hash(request): location = request.GET['location'] start_time = '0' if 'start_time' not in request.GET else request.GET[ 'start_time'] location_type = 'hashtag' thereturn = loginscreen(request) loggedin, data = ttagServiceAuth(request) if loggedin: ttags = ttagPost( "/find/hashtag", { 'hashtag': str(location), 'items_per_page': '10000', 'page_number': '0' }) localprint(request, ttags) if ttags['result'] == 'OK': import datetime response = { 'time': ttags['time'], 'data': { 'founder': { 'location_type': 'hashtag', 'location': location }, 'favorite': False, 'ttags': [] if ttags['data']['ttags'] == None else ttags['data']['ttags'], 'spams': [] if 'spams' not in ttags['data'] or ttags['data']['spams'] == None or 'ttag_list' not in ttags['data']['spams'] or ttags['data']['spams']['ttag_list'] == None else ttags['data']['spams']['ttag_list'], 'thumbups': [] if 'thumbups' not in ttags['data'] or ttags['data']['thumbups'] == None or 'ttag_list' not in ttags['data']['thumbups'] or ttags['data']['thumbups']['ttag_list'] == None else ttags['data']['thumbups']['ttag_list'] } } loggedin_user = data['_id'] servertime = datetime.datetime.fromtimestamp( int(ttags['time']) / 1000) thereturn = render_to_response( "spraycan.html", locals(), context_instance=RequestContext(request)) return thereturn
def deactivateSocialNetwork(request, sn_method, state='userpage'): try : activate_result = ttagDeactivateSocialAccount(sn_method, request.COOKIES['access_token']) response = None if activate_result['result'] == 'OK': localprint(request, 'successfully disconnected') response = render_to_response('lb_signin.html', {'state': state}, context_instance=RequestContext(request)) else: localprint(request, 'not very successfully disconnected') response = signinError(request, 'password', u"Sorry, unable to deactivate the account") return response except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def forgotPasswordMail(request): try : if ('reset_token' in request.session) and ('reset_email' in request.session): reset_token = request.session['reset_token'] subject = 'Ttagit.com forgotten password email verification.' email_message = 'Verify your email address by following this link:\n https://'+request.get_host()+'/fpverify/' + reset_token localprint(request, email_message) to_address = request.session['reset_email'] showPopup = True send_mail(subject, email_message, FROM_ADDRESS, [to_address], fail_silently=True) return render_to_response('forgot_checkemail.html' if not request.is_ajax() else 'partial_forgot_checkemail.html',locals(),context_instance=RequestContext(request)) else: ## cannot send email without reset_token and reset_email return HttpResponse('Cannot send email without reset_token and reset_email') except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def deactivateSocialNetwork(request, sn_method, state='userpage'): try: activate_result = ttagDeactivateSocialAccount( sn_method, request.COOKIES['access_token']) response = None if activate_result['result'] == 'OK': localprint(request, 'successfully disconnected') response = render_to_response( 'lb_signin.html', {'state': state}, context_instance=RequestContext(request)) else: localprint(request, 'not very successfully disconnected') response = signinError(request, 'password', u"Sorry, unable to deactivate the account") return response except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def activationEmail(request, signup_token, recipient): try : subject, from_email = 'Activate your TTAGIT account', email.FROM_ADDRESS templContext = { "S3TATIC_URL": paths.S3TATIC_URL, "signup_token": signup_token, "host": paths.HTTPS+request.get_host() } text_content = mark_safe(render_to_response("email_activation.txt", templContext).content) localprint(request, text_content) html_content = mark_safe(render_to_response("email_activation.html", templContext).content) msg = EmailMultiAlternatives(subject, text_content, from_email, [recipient]) msg.attach_alternative(html_content, "text/html") # msg.send() return HttpResponse("You should receive an email") except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def hash(request): location = request.GET['location'] start_time = '0' if 'start_time' not in request.GET else request.GET['start_time'] location_type = 'hashtag' thereturn = loginscreen(request) loggedin, data = ttagServiceAuth(request) if loggedin : ttags = ttagPost("/find/hashtag",{'hashtag': str(location), 'items_per_page': '10000', 'page_number': '0'}) localprint(request, ttags) if ttags['result'] == 'OK' : import datetime response = {'time': ttags['time'], 'data':{ 'founder': {'location_type':'hashtag','location':location}, 'favorite': False, 'ttags':[] if ttags['data']['ttags'] == None else ttags['data']['ttags'], 'spams':[] if 'spams' not in ttags['data'] or ttags['data']['spams'] == None or 'ttag_list' not in ttags['data']['spams'] or ttags['data']['spams']['ttag_list'] == None else ttags['data']['spams']['ttag_list'], 'thumbups':[] if 'thumbups' not in ttags['data'] or ttags['data']['thumbups'] == None or 'ttag_list' not in ttags['data']['thumbups'] or ttags['data']['thumbups']['ttag_list'] == None else ttags['data']['thumbups']['ttag_list']}} loggedin_user = data['_id'] servertime = datetime.datetime.fromtimestamp(int(ttags['time'])/1000) thereturn = render_to_response("spraycan.html", locals(), context_instance=RequestContext(request)) return thereturn
def twitterAuthCredential(request, state): try : consumer = oauth.Consumer(key=TWITTER_CONSUMER_KEY, secret=TWITTER_CONSUMER_SECRET) #@UndefinedVariable request_token_url = 'https://twitter.com/oauth/request_token' client = oauth.Client(consumer) #@UndefinedVariable client.ca_certs = certifi.where() resp, content = client.request(request_token_url, 'GET') content_dict = content.split('&') request.session['tw_oauth_token_secret'] = content_dict[1].split('=')[1] request.session['twitter_request_state'] = state request.session.modified = True localprint(request, 'token_secret=' + request.session['tw_oauth_token_secret']) oauth_token=content_dict[0].split('=')[1] localprint(request, content) twitter_oauth_url = 'https://api.twitter.com/oauth/authenticate?oauth_token='+oauth_token #return HttpResponse('<script type="text/javascript>document.location.href="'+twitter_oauth_url+'";</script>') return HttpResponseRedirect(twitter_oauth_url) #webbrowser.open(twitter_oauth_url, new=1, autoraise=True) except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def location(request, ttag_id): try: thereturn = HttpResponse( mark_safe( '<p>This section of the website is currently under construction. Check back soon!</p>' )) start_time = '0' if 'start_time' not in request.GET else request.GET[ 'start_time'] location_type = 'geo' loggedin, data = ttagServiceAuth(request) if loggedin: response = ttagPost('/ttag/get', { 'ttag_id': ttag_id, 'search_on': 'ttag' }) localprint(request, response) return thereturn except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def activationEmail(request, signup_token, recipient): try: subject, from_email = 'Activate your TTAGIT account', email.FROM_ADDRESS templContext = { "S3TATIC_URL": paths.S3TATIC_URL, "signup_token": signup_token, "host": paths.HTTPS + request.get_host() } text_content = mark_safe( render_to_response("email_activation.txt", templContext).content) localprint(request, text_content) html_content = mark_safe( render_to_response("email_activation.html", templContext).content) msg = EmailMultiAlternatives(subject, text_content, from_email, [recipient]) msg.attach_alternative(html_content, "text/html") # msg.send() return HttpResponse("You should receive an email") except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def googleAuthCallback(request): try : state = request.GET.get('state') localprint(request, state) code= str(request.GET.get('code')) exchangeToken_url = 'https://accounts.google.com/o/oauth2/token' data = {'code':code, 'client_id':GOOGLE_CLIENT_ID, 'client_secret':GOOGLE_CLIENT_SECRET, 'redirect_uri':GOOGLE_CALLBACK_URL, 'grant_type':'authorization_code'} headers = {'Content-Type':'application/x-www-form-urlencoded'} h = httplib2.Http(ca_certs=certifi.where()) resp, content = h.request(exchangeToken_url, 'POST', headers=headers, body=urlencode(data)) exchange_token_obj = simplejson.loads(content) localprint(request, exchange_token_obj) response = None if(exchange_token_obj.has_key('access_token')): access_token = exchange_token_obj['access_token'] request.session['google_access_token'] = access_token profile_url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' + access_token h2 = httplib2.Http(ca_certs=certifi.where()) user_info_resp, user_info_content = h2.request(profile_url, 'GET') user_info_obj = simplejson.loads(user_info_content) localprint(request, user_info_obj) if user_info_resp.status == 200: if state == 'userpage': response = genericSocialActivate('googleplus', user_info_obj['id'], request.COOKIES['access_token'], request, state) #access token has to be change to the right access_token elif state == 'homepage' or state == 'signin': response = genericSocialLogin('googleplus', user_info_obj['id'], user_info_obj['email'], request, access_token, state) else: response = signinError(request,'password', u"Sorry, the Google sign-in failed.") return response #return response else: return HttpResponse("<script>window.close();</script>") except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def facebookAuthCallBack(request): try: if request.GET.get('code') != None: state = str(request.GET.get('state')) localprint(request, "fb call back session state are equal") code = str(request.GET.get('code')) client_id = FACEBOOK_APP_ID client_secret = FACEBOOK_APP_SECRET redirect_uri = FACEBOOK_APP_CALLBACK_URL exchangeToken_url = 'https://graph.facebook.com/oauth/access_token' #exchangeToken_url = 'https://graph.facebook.com/oauth/access_token?'+'&client_id='+client_id+'&redirect_uri='+redirect_uri+'&client_secret='+client_secret+'&code='+code headers = {'Content-Type': 'application/x-www-form-urlencoded'} data = { 'client_id': client_id, 'client_secret': client_secret, 'redirect_uri': redirect_uri, 'code': code } h = httplib2.Http(ca_certs=certifi.where()) resp, content = h.request(exchangeToken_url, 'POST', headers=headers, body=urlencode(data)) #Extracting access_token from the content string localprint(request, content) fb_access_token = content.split('&')[0].split('=')[1] fb_profile_url = 'https://graph.facebook.com/me?access_token=' + fb_access_token h2 = httplib2.Http(ca_certs=certifi.where()) user_info_resp, user_info_content = h2.request( fb_profile_url, 'GET') user_info_obj = simplejson.loads(user_info_content) localprint(request, 'fb user account email: ' + user_info_obj['email']) response = None if user_info_resp.status == 200: if state == 'userpage': postToFacebookWall(fb_access_token, 'Connected to Ttagit.com', request) response = genericSocialActivate( 'facebook', user_info_obj['id'], request.COOKIES['access_token'], request, state) elif state == 'homepage' or state == 'signin': response = genericSocialLogin('facebook', user_info_obj['id'], user_info_obj['email'], request, fb_access_token, state) else: response = signinError(request, 'password', u"Sorry, the Facebook sign-in failed.") return response elif request.GET.get('request_ids') != None and request.GET.get( 'app_request_type') != None: return redirect(paths.HTTPS + request.get_host()) else: return HttpResponse("<script>window.close();</script>") except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def genericSocialLogin(sn_method, sn_id, sn_email, request, sn_access_token, state='homepage'): try : sn_signin_result = ttagSocialNetworkSignin(sn_method, sn_id, sn_email) localprint(request, sn_signin_result) response = None if sn_signin_result['result'] == 'OK': response = render_to_response('lb_signin.html', {'state': state, 'sn_method':sn_method}, context_instance=RequestContext(request)) setCookie(response, 'access_token', sn_signin_result['access_token']) elif state == 'signin' : response = signinError(request, 'password', u"You don't seem to have an active account with us yet. You should sign up first, then go to your Settings page and connect this social network to your account.") else: sn_full_name = sn_email.split('@')[0] + ''.join(random.choice(string.digits) for x in range(5)) sn_user_name = sn_full_name sn_password = ''.join(random.choice(string.digits + string.ascii_lowercase + string.ascii_uppercase) for x in range(8)) sn_signup_result = ttagSocialNetworkNonTwitterSignup(sn_email, sn_user_name, sn_full_name, sn_password, sn_method, sn_id) if sn_signup_result['result'] == 'OK': c = {} if sn_method == 'facebook': postToFacebookWall(sn_access_token, 'Registered at Ttagit.com', request) c = {'state':state,'friendrequest':facebookFriendsRequest(request, True)} response = render_to_response('lb_signin.html', c, context_instance=RequestContext(request)) # if sn_method == 'googleplus': # temp_list = getGoogleContactUrllib(sn_access_token) # c = {'google_contact_list': temp_list} # response = render_to_response('test_contacts.html', c, context_instance=RequestContext(request)) setCookie(response, 'access_token', sn_signup_result['access_token']) else: response = signinError(request, 'password', u"Your email address already exists in our system, please login to your TTAGIT account and then go to the Settings page to connect this social network account.") return response except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def googleAuthCallback(request): try: state = request.GET.get('state') localprint(request, state) code = str(request.GET.get('code')) exchangeToken_url = 'https://accounts.google.com/o/oauth2/token' data = { 'code': code, 'client_id': GOOGLE_CLIENT_ID, 'client_secret': GOOGLE_CLIENT_SECRET, 'redirect_uri': GOOGLE_CALLBACK_URL, 'grant_type': 'authorization_code' } headers = {'Content-Type': 'application/x-www-form-urlencoded'} h = httplib2.Http(ca_certs=certifi.where()) resp, content = h.request(exchangeToken_url, 'POST', headers=headers, body=urlencode(data)) exchange_token_obj = simplejson.loads(content) localprint(request, exchange_token_obj) response = None if (exchange_token_obj.has_key('access_token')): access_token = exchange_token_obj['access_token'] request.session['google_access_token'] = access_token profile_url = 'https://www.googleapis.com/oauth2/v1/userinfo?access_token=' + access_token h2 = httplib2.Http(ca_certs=certifi.where()) user_info_resp, user_info_content = h2.request(profile_url, 'GET') user_info_obj = simplejson.loads(user_info_content) localprint(request, user_info_obj) if user_info_resp.status == 200: if state == 'userpage': response = genericSocialActivate( 'googleplus', user_info_obj['id'], request.COOKIES['access_token'], request, state ) #access token has to be change to the right access_token elif state == 'homepage' or state == 'signin': response = genericSocialLogin('googleplus', user_info_obj['id'], user_info_obj['email'], request, access_token, state) else: response = signinError(request, 'password', u"Sorry, the Google sign-in failed.") return response #return response else: return HttpResponse("<script>window.close();</script>") except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def facebookAuthCallBack(request): try : if request.GET.get('code') != None: state = str(request.GET.get('state')) localprint(request, "fb call back session state are equal") code = str(request.GET.get('code')) client_id=FACEBOOK_APP_ID client_secret=FACEBOOK_APP_SECRET redirect_uri=FACEBOOK_APP_CALLBACK_URL exchangeToken_url = 'https://graph.facebook.com/oauth/access_token' #exchangeToken_url = 'https://graph.facebook.com/oauth/access_token?'+'&client_id='+client_id+'&redirect_uri='+redirect_uri+'&client_secret='+client_secret+'&code='+code headers = {'Content-Type':'application/x-www-form-urlencoded'} data = {'client_id':client_id, 'client_secret':client_secret, 'redirect_uri':redirect_uri, 'code':code} h = httplib2.Http(ca_certs=certifi.where()) resp, content = h.request(exchangeToken_url, 'POST', headers=headers, body=urlencode(data)) #Extracting access_token from the content string localprint(request, content) fb_access_token = content.split('&')[0].split('=')[1] fb_profile_url = 'https://graph.facebook.com/me?access_token=' + fb_access_token h2 = httplib2.Http(ca_certs=certifi.where()) user_info_resp, user_info_content = h2.request(fb_profile_url, 'GET') user_info_obj = simplejson.loads(user_info_content) localprint(request, 'fb user account email: ' + user_info_obj['email']) response = None if user_info_resp.status == 200: if state == 'userpage': postToFacebookWall(fb_access_token, 'Connected to Ttagit.com',request) response = genericSocialActivate('facebook', user_info_obj['id'], request.COOKIES['access_token'], request, state) elif state == 'homepage' or state == 'signin': response = genericSocialLogin('facebook', user_info_obj['id'], user_info_obj['email'], request, fb_access_token, state) else: response = signinError(request, 'password', u"Sorry, the Facebook sign-in failed.") return response elif request.GET.get('request_ids') != None and request.GET.get('app_request_type') != None: return redirect(paths.HTTPS+request.get_host()) else: return HttpResponse("<script>window.close();</script>") except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def genericSocialLogin(sn_method, sn_id, sn_email, request, sn_access_token, state='homepage'): try: sn_signin_result = ttagSocialNetworkSignin(sn_method, sn_id, sn_email) localprint(request, sn_signin_result) response = None if sn_signin_result['result'] == 'OK': response = render_to_response( 'lb_signin.html', { 'state': state, 'sn_method': sn_method }, context_instance=RequestContext(request)) setCookie(response, 'access_token', sn_signin_result['access_token']) elif state == 'signin': response = signinError( request, 'password', u"You don't seem to have an active account with us yet. You should sign up first, then go to your Settings page and connect this social network to your account." ) else: sn_full_name = sn_email.split('@')[0] + ''.join( random.choice(string.digits) for x in range(5)) sn_user_name = sn_full_name sn_password = ''.join( random.choice(string.digits + string.ascii_lowercase + string.ascii_uppercase) for x in range(8)) sn_signup_result = ttagSocialNetworkNonTwitterSignup( sn_email, sn_user_name, sn_full_name, sn_password, sn_method, sn_id) if sn_signup_result['result'] == 'OK': c = {} if sn_method == 'facebook': postToFacebookWall(sn_access_token, 'Registered at Ttagit.com', request) c = { 'state': state, 'friendrequest': facebookFriendsRequest(request, True) } response = render_to_response( 'lb_signin.html', c, context_instance=RequestContext(request)) # if sn_method == 'googleplus': # temp_list = getGoogleContactUrllib(sn_access_token) # c = {'google_contact_list': temp_list} # response = render_to_response('test_contacts.html', c, context_instance=RequestContext(request)) setCookie(response, 'access_token', sn_signup_result['access_token']) else: response = signinError( request, 'password', u"Your email address already exists in our system, please login to your TTAGIT account and then go to the Settings page to connect this social network account." ) return response except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)
def twitterAuthCallback(request): try : import urllib consumer = oauth.Consumer(key=TWITTER_CONSUMER_KEY, secret=TWITTER_CONSUMER_SECRET) #@UndefinedVariable response = None localprint(request, request.session['tw_oauth_token_secret']) if request.GET.get('oauth_token') != None: token = oauth.Token(request.GET.get('oauth_token'), request.session['tw_oauth_token_secret']) #@UndefinedVariable token.set_verifier(verifier=request.GET.get('oauth_verifier')) accessToken_url = 'https://api.twitter.com/oauth/access_token' client = oauth.Client(consumer, token) #@UndefinedVariable client.ca_certs = certifi.where() resp, content = client.request(accessToken_url, 'POST') localprint(request, content) if resp.status == 200: twitter_request_state = request.session['twitter_request_state'] twitter_user_info = content.split('&') if twitter_request_state == 'userpage': localprint(request, twitter_user_info[2]) response = genericSocialActivate('twitter', twitter_user_info[2].split('=')[1], request.COOKIES['access_token'], request, 'userpage') localprint(request, 'userpage') elif twitter_request_state == 'homepage': context = {} for pair in twitter_user_info : if pair.find('=') : key,value = map(urllib.unquote,pair.split('=')) try : context[key] = context[key]+','+value except KeyError : context[key] = value request.session["twitter_id"] = context["user_id"]; request.session.modified = True return HttpResponseRedirect(paths.HTTPS+request.get_host()+'/signup/twitter') elif twitter_request_state == 'signin': localprint(request, 'homepage') context = {'full_name':'','email':''} for pair in twitter_user_info : if pair.find('=') : key,value = map(urllib.unquote,pair.split('=')) try : context[key] = context[key]+','+value except KeyError : context[key] = value context['user_name'] = context['screen_name'] context['sn_method'] = 'twitter' #twitter_val_json = ttagServiceTwitterValidation(context['user_id']) twitter_val_json = ttagSocialNetworkSignin('twitter', context['user_id'], '') if twitter_val_json['result'] == 'OK': access_token = twitter_val_json['access_token'] #Twitter account exist in our data #sign user in and get accesstoken response = render_to_response('lb_signin.html', {'state': twitter_request_state}, context_instance=RequestContext(request)) setCookie(response, 'access_token', access_token) elif twitter_request_state == 'signin' : response = signinError(request, 'password', u"You don't seem to have an active account with us yet. You should sign up first, then go to your Settings page and connect this social network to your account.") else: ##Redirect user to twitter register page ask for user email, full name, password, (use twitter_screen_name as the default value) #twitter_screen_name = twitter_user_info[3].split('=')[1] ## user service: ttagServiceTwitterRegister(twitter_user_id, twitter_screen_name, email, password, full_name) ## User directed to sign up lightbox form #request.session['full_name'] = twitter_screen_name ## Twitter will not provide email ## to lightbox with another signup form #return HttpResponseRedirect('http://www.yahoo.com') response = render_to_response('lb_signup.html', context, context_instance=RequestContext(request)) else: ## Twitter API token is invalid if(twitter_request_state == "homepage") : from webapp.views.signup import signupError response = signupError(request, 'password', u"Sorry, the Twitter sign-in failed.") else : response = signinError(request, 'password', u"Sorry, the Twitter sign-in failed.") return response else: return HttpResponseRedirect(reverse('home-page')) # return HttpResponse("<script>window.close();</script>") except : logger=logging.getLogger(__name__) return errorscreen(request,logger, sys)
def twitterAuthCallback(request): try: import urllib consumer = oauth.Consumer( key=TWITTER_CONSUMER_KEY, secret=TWITTER_CONSUMER_SECRET) #@UndefinedVariable response = None localprint(request, request.session['tw_oauth_token_secret']) if request.GET.get('oauth_token') != None: token = oauth.Token( request.GET.get('oauth_token'), request.session['tw_oauth_token_secret']) #@UndefinedVariable token.set_verifier(verifier=request.GET.get('oauth_verifier')) accessToken_url = 'https://api.twitter.com/oauth/access_token' client = oauth.Client(consumer, token) #@UndefinedVariable client.ca_certs = certifi.where() resp, content = client.request(accessToken_url, 'POST') localprint(request, content) if resp.status == 200: twitter_request_state = request.session[ 'twitter_request_state'] twitter_user_info = content.split('&') if twitter_request_state == 'userpage': localprint(request, twitter_user_info[2]) response = genericSocialActivate( 'twitter', twitter_user_info[2].split('=')[1], request.COOKIES['access_token'], request, 'userpage') localprint(request, 'userpage') elif twitter_request_state == 'homepage': context = {} for pair in twitter_user_info: if pair.find('='): key, value = map(urllib.unquote, pair.split('=')) try: context[key] = context[key] + ',' + value except KeyError: context[key] = value request.session["twitter_id"] = context["user_id"] request.session.modified = True return HttpResponseRedirect(paths.HTTPS + request.get_host() + '/signup/twitter') elif twitter_request_state == 'signin': localprint(request, 'homepage') context = {'full_name': '', 'email': ''} for pair in twitter_user_info: if pair.find('='): key, value = map(urllib.unquote, pair.split('=')) try: context[key] = context[key] + ',' + value except KeyError: context[key] = value context['user_name'] = context['screen_name'] context['sn_method'] = 'twitter' #twitter_val_json = ttagServiceTwitterValidation(context['user_id']) twitter_val_json = ttagSocialNetworkSignin( 'twitter', context['user_id'], '') if twitter_val_json['result'] == 'OK': access_token = twitter_val_json['access_token'] #Twitter account exist in our data #sign user in and get accesstoken response = render_to_response( 'lb_signin.html', {'state': twitter_request_state}, context_instance=RequestContext(request)) setCookie(response, 'access_token', access_token) elif twitter_request_state == 'signin': response = signinError( request, 'password', u"You don't seem to have an active account with us yet. You should sign up first, then go to your Settings page and connect this social network to your account." ) else: ##Redirect user to twitter register page ask for user email, full name, password, (use twitter_screen_name as the default value) #twitter_screen_name = twitter_user_info[3].split('=')[1] ## user service: ttagServiceTwitterRegister(twitter_user_id, twitter_screen_name, email, password, full_name) ## User directed to sign up lightbox form #request.session['full_name'] = twitter_screen_name ## Twitter will not provide email ## to lightbox with another signup form #return HttpResponseRedirect('http://www.yahoo.com') response = render_to_response( 'lb_signup.html', context, context_instance=RequestContext(request)) else: ## Twitter API token is invalid if (twitter_request_state == "homepage"): from webapp.views.signup import signupError response = signupError( request, 'password', u"Sorry, the Twitter sign-in failed.") else: response = signinError( request, 'password', u"Sorry, the Twitter sign-in failed.") return response else: return HttpResponseRedirect(reverse('home-page')) # return HttpResponse("<script>window.close();</script>") except: logger = logging.getLogger(__name__) return errorscreen(request, logger, sys)