def facebook_callback(request): """ Una vez el usuario permise o no el acceso a su cuenta de Facebook esta vista revisa si concedio permisos o no En caso afirmativo busca a un usuario con ese id de Facebook para crear la sesion, de no existir crea al usuario """ code = None if 'code' not in request.GET else request.GET['code'] retorno = HttpResponseRedirect('/?error_facebook') try: if code is not None: args = dict(client_id=FACEBOOK["KEY"], redirect_uri=FACEBOOK["CALLBACK"], client_secret=FACEBOOK["SECRET"], code=code) response = urlparse.parse_qs(urllib.urlopen("https://graph.facebook.com/oauth/access_token?%s"%urllib.urlencode(args)).read()) access_token = response["access_token"][-1] if access_token is not None: fb_user = json.load(urllib.urlopen("https://graph.facebook.com/me?%s"%urllib.urlencode(dict(access_token=access_token)))) if 'id' in fb_user: try: cliente = Cliente.objects.get(facebook_id=fb_user['id']) cliente.login(request) except Cliente.DoesNotExist: cliente = Cliente(nombre_usuario="%s_fb"%(fb_user['username'] if 'username' in fb_user else fb_user['id']), facebook_id=fb_user['id'], facebook_accesstoken=access_token, facebook_code=code) cliente.save() cliente.login(request) request.session['tipo'] = 'cliente' retorno = HttpResponseRedirect('/app/') except: pass return retorno
def facebook_callback(request): """ Una vez el usuario permise o no el acceso a su cuenta de Facebook esta vista revisa si concedio permisos o no En caso afirmativo busca a un usuario con ese id de Facebook para crear la sesion, de no existir crea al usuario """ code = None if 'code' not in request.GET else request.GET['code'] retorno = HttpResponseRedirect('/?error_facebook') try: if code is not None: args = dict(client_id=FACEBOOK["KEY"], redirect_uri=FACEBOOK["CALLBACK"], client_secret=FACEBOOK["SECRET"], code=code) response = urlparse.parse_qs( urllib.urlopen( "https://graph.facebook.com/oauth/access_token?%s" % urllib.urlencode(args)).read()) access_token = response["access_token"][-1] if access_token is not None: fb_user = json.load( urllib.urlopen( "https://graph.facebook.com/me?%s" % urllib.urlencode(dict(access_token=access_token)))) if 'id' in fb_user: try: cliente = Cliente.objects.get( facebook_id=fb_user['id']) cliente.login(request) except Cliente.DoesNotExist: cliente = Cliente(nombre_usuario="%s_fb" % (fb_user['username'] if 'username' in fb_user else fb_user['id']), facebook_id=fb_user['id'], facebook_accesstoken=access_token, facebook_code=code) cliente.save() cliente.login(request) request.session['tipo'] = 'cliente' retorno = HttpResponseRedirect('/app/') except: pass return retorno
def twitter_callback(request): """ Una vez el usuario permise o no el acceso a su cuenta de Twitter esta vista revisa si concedio permisos o no En caso afirmativo busca a un usuario con ese id de Twitter para crear la sesion, de no existir crea al usuario """ retorno = HttpResponseRedirect('/') try: s = request.session['tw_rt'] tokens = s.split('::') request_token = tokens[0] request_secret = tokens[1] if 'oauth_token' in request.GET and 'oauth_verifier' in request.GET: oauth_verifier = request.GET['oauth_verifier'] oauth = tweepy.OAuthHandler(TWITTER['KEY'], TWITTER['SECRET']) oauth.set_request_token(request_token, request_secret) oauth.get_access_token(oauth_verifier) api = tweepy.API(oauth) tw_user = api.verify_credentials() try: cliente = Cliente.objects.get(twitter_id=tw_user.id) cliente.login(request) except Cliente.DoesNotExist: accesstoken = oauth.access_token.key secret = oauth.access_token.secret cliente = Cliente(nombre_usuario="%s_tc" % tw_user.screen_name, twitter_id=tw_user.id, twitter_accesstoken=accesstoken, twitter_secrettoken=secret) cliente.save() cliente.login(request) retorno = HttpResponseRedirect('/app/') except: retorno = HttpResponseRedirect('/?error_twitter') del request.session['tw_rt'] return retorno
def twitter_callback(request): """ Una vez el usuario permise o no el acceso a su cuenta de Twitter esta vista revisa si concedio permisos o no En caso afirmativo busca a un usuario con ese id de Twitter para crear la sesion, de no existir crea al usuario """ retorno = HttpResponseRedirect('/') try: s = request.session['tw_rt'] tokens = s.split('::') request_token = tokens[0] request_secret = tokens[1] if 'oauth_token' in request.GET and 'oauth_verifier' in request.GET: oauth_verifier = request.GET['oauth_verifier'] oauth = tweepy.OAuthHandler(TWITTER['KEY'], TWITTER['SECRET']) oauth.set_request_token(request_token, request_secret) oauth.get_access_token(oauth_verifier) api = tweepy.API(oauth) tw_user = api.verify_credentials() try: cliente = Cliente.objects.get(twitter_id=tw_user.id) cliente.login(request) except Cliente.DoesNotExist: accesstoken = oauth.access_token.key secret = oauth.access_token.secret cliente = Cliente(nombre_usuario="%s_tc"%tw_user.screen_name, twitter_id=tw_user.id, twitter_accesstoken=accesstoken, twitter_secrettoken=secret) cliente.save() cliente.login(request) retorno = HttpResponseRedirect('/app/') except: retorno = HttpResponseRedirect('/?error_twitter') del request.session['tw_rt'] return retorno