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))
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))