예제 #1
0
	def getInforUsuTw(self,oat2,aot2sec,nose):
		nonce2=nuevo_nonce()
		h2=dame_hora()
		u2="https://api.twitter.com/1.1/account/verify_credentials.json"
		parametros_string="%s&%s&%s&%s&%s&%s" % (sin_percent_encode("oauth_consumer_key",claves.consumer_key ),sin_percent_encode("oauth_nonce",nonce2),sin_percent_encode("oauth_signature_method","HMAC-SHA1"),sin_percent_encode("oauth_timestamp",h2),sin_percent_encode("oauth_token",oat2),sin_percent_encode("oauth_version","1.0"))

		uno=urllib.quote(claves.consumer_secret.encode('utf-8'),"")
		dos=urllib.quote(aot2sec.encode('utf-8'),"")
		Signing_key="%s&%s" % ( uno,dos)
		Firma_string="GET&%s&%s" % (urllib.quote(u2,""),urllib.quote(parametros_string,""))
		hash1 = hmac.new( Signing_key,Firma_string, hashlib.sha1).digest()
		fir=binascii.b2a_base64(hash1)[:-1]
		#base64.b64encode(hash1)
		cabecera_string="OAuth %s=\"%s\", %s=\"%s\", %s=\"%s\", %s=\"%s\", %s=\"%s\", %s=\"%s\", %s=\"%s\"" % (urllib.quote("oauth_consumer_key"),urllib.quote(claves.consumer_key.encode('utf-8'),""), urllib.quote("oauth_nonce"),urllib.quote(nonce2.encode('utf-8'),""),urllib.quote("oauth_signature"),urllib.quote(fir), urllib.quote("oauth_signature_method"),urllib.quote("HMAC-SHA1"),urllib.quote("oauth_timestamp"),urllib.quote(h2.encode('utf-8')),urllib.quote("oauth_token"),urllib.quote(oat2.encode('utf-8'),""),urllib.quote("oauth_version"),urllib.quote("1.0"))
		try:
			result2 = urlfetch.fetch(url=u2,
				 			method=urlfetch.GET,
						    headers={
						    "X-HostCommonName":"api.twitter.com",
						    "Authorization": cabecera_string,
						    "X-Target-URI":"https://api.twitter.com",
						    "Connection":"Keep-Alive"
							},validate_certificate=False)
		except Exception as e:
			return (False, u"exception en returnurlHandler getInforUsuTw obtener credenciales: %s" % e.message)
		if result2.status_code == 200:
			usu=json.loads(result2.content)
			usu["email"]="sin_emailTwitter"
			idso="tw-%s" % str(usu["id"])
			u2=todosmodelos.socialRed.query(todosmodelos.socialRed.id_social==idso).get()
			if not u2:
				"""oauth_token = ndb.StringProperty()
	oauth_token_secret = ndb.StringProperty()
	expires =  ndb.IntegerProperty()
	id_social= ndb.StringProperty(indexed = True) # tw-  o fb- mas el id de twitter o facebook
	nombre= ndb.StructuredProperty()
	email= ndb.StringProperty()
	avatar= ndb.StringProperty()"""
				u2=todosmodelos.socialRed(id_social=idso,oauth_token=oat2,oauth_token_secret =aot2sec, nombre=usu["name"], email=usu["email"],avatar=usu["profile_image_url"]).put_async()
				clien=todosmodelos.Clientes(parent=self.restikey,idsocial=idso,email=usu["email"],validada=True)
				u=clien.put_async()
				u=u.get_result()
				rcli={'id':u.id(),'usu':clien,'tipo':"tw",'avatar':usu["profile_image_url"],'nombre':"%s (<a href='https://twitter.com/@%s' target='_blank'>@%s</a>)" %  (usu["name"],usu["screen_name"],usu["screen_name"])}
				self.enviarCliente(rcli,self.restikey,None)
			else:
				u2.populate(nombre=usu["name"],oauth_token=oat2,oauth_token_secret =aot2sec, email=usu["email"],avatar=usu["profile_image_url"])
				u2.put_async()
				clien = todosmodelos.Clientes.query(todosmodelos.Clientes.idsocial==idso,ancestor=self.restikey).get()
				if not clien:
					clien=todosmodelos.Clientes(parent=self.restikey,idsocial=idso,email=usu["email"],validada=True)
					u=clien.put()
					rcli={'id':u.id(),'usu':clien,'tipo':"tw",'avatar':usu["profile_image_url"],'nombre':"%s (<a href='https://twitter.com/@%s' target='_blank'>@%s</a>)" %  (usu["name"],usu["screen_name"],usu["screen_name"])}
					self.enviarCliente(rcli,self.restikey,None)
				else:
					if not clien.email == usu["email"]:
						clien.email=usu["email"]
						clien.put_async()
			self.session['cliente']= {'tipo':"tw","usu":clien,"avatar":usu["profile_image_url"],"nombre":"%s (<a href='https://twitter.com/@%s' target='_blank'>@%s</a>)" % (usu["name"],usu["screen_name"],usu["screen_name"]), "tienda":self.restikey}
			mitz=utils.USOHORARIO[self.res["tienda"]["usohorario"]]()
			return (True,{
				'sel':-1,
	            'seli':-1,
	            'hora':int(time.time()*1000),
	            'hh':utils.fhorario(self.res),
	            'hhmm':datetime.datetime.now(mitz).strftime("%Y:%m:%d:%H:%M"),
	            "singmt":datetime.datetime.now().strftime("%Y:%m:%d:%H:%M"),
	            'titulo':"Pedido online a Domicilio y para Recoger de %s" % self.res["tienda"]["nombre"]
	           })
			#return (True, u"ok en returnurlHandler obtener credenciales content=%s" % result2.content)
		else:
			return (False, u"malllll en returnurlHandler getInforUsuTw, status_code=%d ,<p> --------------content=%s</p><p> oat2=%s</p><p> cabecera=%s</p><p>firma=%s" % (result2.status_code,result2.content,oat2,cabecera_string,Firma_string))
예제 #2
0
	def getInforUsu(self,idusu,adto,mijson=False):
		u3="https://graph.facebook.com/v2.0/%s?fields=id,name,picture,email&method=GET&format=json&suppress_http_code=1&access_token=%s" % (idusu,adto )
		try:
			result = urlfetch.fetch(url=u3,
						    method=urlfetch.GET,
						    validate_certificate=False)
		except Exception as e:
			self.devolPagError(u" exception en obtener informacion de usuario %s: %s" % (idusu,e.message))
			#self.render_tplt('/templates/unatienindex7.html',{'errorh':u" exception en obtener informacion de usuario %s: %s" % (idusu,e.message)})
			#self.response.out.write(u" exception en obtener informacion de usuario %s: %s" % (idusu,e.message))
			return
		if result.status_code == 200:
			usu=json.loads(result.content)
			if mijson:
				#men="voy directo a  obtener informacion de usuario"
				ex=int(mijson["expires"])-120
				self.session["fb-usuario"]={
					"fb-token":{
						"access_token":mijson["access_token"],
						"expires":ex,
						"vino":mijson["vino"]
					},
					"usu-id":usu["id"]
				}
			else:
				ex=self.session.get("fb-usuario")["fb-token"]["expires"]
				#men="ok en obtener informacion de usuario"
			#ok en obtener informacion de usuario 10201992019705886:
#content={"id":"10201992019705886","name":"Raul Martinez","picture":{"data":{"is_silhouette":true,"url":"https:\/\/fbcdn-profile-a.akamaihd.net\/hprofile-ak-frc1\/t1.0-1\/c25.0.81.81\/s50x50\/252231_1002029915278_1941483569_s.jpg"}},"email":"tlloreda\u0040hotmail.com"}
			idso="fa-%s" % usu["id"]
			u2=todosmodelos.socialRed.query(todosmodelos.socialRed.id_social==idso).get()
			if not u2:
				"""oauth_token = ndb.StringProperty()
	oauth_token_secret = ndb.StringProperty()
	expires =  ndb.IntegerProperty()
	id_social= ndb.StringProperty(indexed = True) # tw-  o fb- mas el id de twitter o facebook
	nombre= ndb.StructuredProperty()
	email= ndb.StringProperty()
	avatar= ndb.StringProperty()"""
				u2=todosmodelos.socialRed(id_social=idso,oauth_token=mijson["access_token"],expires=ex, nombre=usu["name"], email=usu["email"],avatar=usu["picture"]["data"]["url"]).put_async()
				clien=todosmodelos.Clientes(parent=self.restikey,idsocial=idso,email=usu["email"],validada=True)
				u=clien.put_async()
				u=u.get_result()
				rcli={'id':u.id(),'usu':clien,'tipo':"fa",'avatar':usu["picture"]["data"]["url"],'nombre':usu["name"]}
				self.enviarCliente(rcli,self.restikey,None)
			else:
				u2.populate(nombre=usu["name"],oauth_token=mijson["access_token"],expires=ex, email=usu["email"],avatar=usu["picture"]["data"]["url"])
				u2.put_async()
				clien = todosmodelos.Clientes.query(todosmodelos.Clientes.idsocial==idso,ancestor=self.restikey).get()
				if not clien:
					clien=todosmodelos.Clientes(parent=self.restikey,email=usu["email"],idsocial=idso,validada=True)
					u=clien.put()
					rcli={'id':u.id(),'usu':clien,'tipo':"fa",'avatar':usu["picture"]["data"]["url"],'nombre':usu["name"]}
					self.enviarCliente(rcli,self.restikey,None)
				else:
					if not clien.email == usu["email"]:
						clien.email=usu["email"]
						clien.put_async()
			self.session['cliente']= {'tipo':"fa","usu":clien,"avatar":usu["picture"]["data"]["url"],"nombre":"<a href='https://www.facebook.com/' target='_blank'>%s</a>" % usu["name"], "tienda":self.restikey}
			mitz=utils.USOHORARIO[self.res["tienda"]["usohorario"]]()
			self.render_tplt('pedidoa.html',{
				'sel':-1,
	            'seli':-1,
	            'hora':int(time.time()*1000),
	            'hh':utils.fhorario(self.res),
	            'hhmm':datetime.datetime.now(mitz).strftime("%Y:%m:%d:%H:%M"),
	            "singmt":datetime.datetime.now().strftime("%Y:%m:%d:%H:%M"),
	            'titulo':"Pedido online a Domicilio y para Recoger de %s" % self.res["tienda"]["nombre"]
	           })
			#self.response.out.write(u"%s %s:<p> <img src=\"%s\" /></p>" % (men,usu,usu["picture"]["data"]["url"]))
			#self.response.out.write("ok en obtener informacion de usuario %s:<p> content=%s</p>" % (resjson["data"]["user_id"],result.content))
		else:
			self.devolPagError("mal en obtener informacion de usuario %s:<p> status_code=%d</p>" % (idusu,result.status_code))