API Google. Ejemplos

softruz
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

API Google. Ejemplos

Post by softruz »

Muy buenas Compañeros,
abro este hilo para compartir todo lo que sepamos sobre la API de Google, en este caso comparto una pequeña parte de la API de Google Calendar, para poder leer y insertar eventos en _.

Teneis que configurar las variables myEmail (email de gmail),myPassword (password del email)

Si teneis mas informacion



////////////////////////////////
// Codigo Fuente
////////////////////////////

#include "FiveWin.ch"

Function Main()
local strURL:= "https://www.google.com/accounts/ClientLogin",AuthCode:=""
local strFormData,myEmail:="",myPassword:="",mySource:="project-example-1",cRespone:=""
strFormData = "Email=" + myEmail + "&Passwd=" + myPassword + "&source=" + mySource + "&service=cl"
cResponse:=SendPostToUrl( strURL, strFormData )
AuthCode = Right(cResponse, Len(cResponse) - at("Auth=",cResponse) - 4)

cEventCode:=getEventCode(date(),"Test Event","Event Description","Your Name","Email","Cordoba")

// Añadir un nuevo evento
strURL = "http://www.google.com/calendar/feeds/de ... ivate/full"
strFormData = cEventCode
cResponse:=SendPostToUrl( strURL, strFormData,"application/atom+xml","GoogleLogin auth=" + AuthCode)

// Recivir _
strURL:="https://www.google.com/calendar/feeds/d ... ndars/full"
strFormData = cEventCode
cResponse:=SendPostToUrl( strURL, strFormData,"application/atom+xml","GoogleLogin auth=" + AuthCode)
msginfo(cResponse)
Return Nil

Function SendPostToUrl( cUrl, cParams,cContentType,cAuthorization )
Local oOle,cRet:='',uRet
default cContentType:="application/x-www-form-urlencoded"
default cAuthorization:=""
Try
oOle := CreateObject( 'MSXML2.XMLHTTP' )
Catch
oOle := CreateObject( 'Microsoft.XMLHTTP' )
End
oOle:Open( 'POST', cUrl, .f. )

oOle:SetRequestHeader( "Content-Type",cContentType)
if !empty(cAuthorization)
oOle:SetRequestHeader( "Authorization",cAuthorization)
end if

oOle:Send( cParams )
SysRefresh()

#ifdef __XHARBOUR__
cRet := oOle:ResponseBody
#else
AEval(oOle:ResponseBody,{|uRet|cRet+=Chr(uRet)})
#endif
Return cRet

function dtos_format(fecha)
local cadena
if valtype(fecha) = "D"
cadena:=dtos(fecha)
if !empty(cadena)
return substr(cadena,1,4) + "-" + substr(cadena,5,2) + "-" + substr(cadena,7,2)
else
return "0000-00-00"
end if
else
return "0000-00-00"
end if
return "0000-00-00"

static function getEventCode(dDate,cEventName,cEventDescription,cYourName,cEmailAddress,cLocation,cStartTime,cEndTime)
local formattedDate:=""
default cStartTime:="17:00:00",cEndTime:="18:00:00"

// 'change the date into Google's yyyy-mm-dd format
formattedDate = dtos_format(dDate)

getEventCode = "<entry xmlns='http://www.w3.org/2005/Atom'" + CRLF +;
"xmlns:gd='http://schemas.google.com/g/2005'>" + CRLF +;
" <category scheme='http://schemas.google.com/g/2005#kind'" + CRLF +;
"term='http://schemas.google.com/g/2005#event'></category>" + CRLF +;
" <title type='text'>" +cEventName+ "</title>" + CRLF +;
"<content type='text'>" +cEventDescription+ "</content>" + CRLF +;
"<author>" + CRLF +;
"<name>" +cYourName+ "</name>" + CRLF +;
"<email>" +cEmailAddress+ "</email>" + CRLF +;
"</author>" + CRLF +;
"<gd:transparency" + CRLF +;
"value='http://schemas.google.com/g/2005#event.opaque'>" + CRLF +;
"</gd:transparency>" + CRLF +;
"<gd:eventStatus" + CRLF +;
"value='http://schemas.google.com/g/2005#event.confirmed'>" + CRLF +;
"</gd:eventStatus>" + CRLF +;
"<gd:where valueString='" +cLocation+ "'></gd:where>" + CRLF +;
"<gd:when startTime='" + formattedDate + "T" + cStartTime+"'" + CRLF +;
"endTime='" + formattedDate + "T" + cEndTime+"'></gd:when>" + CRLF +;
"</entry>"
return getEventCode
User avatar
anserkk
Posts: 1280
Joined: Fri Jun 13, 2008 11:04 am
Location: Kochi, India

Re: API Google. Ejemplos

Post by anserkk »

Very good
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: API Google. Ejemplos

Post by Antonio Linares »

Gracias por compartirlo! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
softruz
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: API Google. Ejemplos

Post by softruz »

Para eso estamos, para Compartir.

Un Saludo.
elvira
Posts: 462
Joined: Fri Jun 29, 2012 12:49 pm

Re: API Google. Ejemplos

Post by elvira »

Gracias!!
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: API Google. Ejemplos

Post by hmpaquito »

Muchas gracias por compartirlo.

Estas aportaciones "web" dan mucha "vidilla" a nuestros aplicativos desktop.
softruz
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: API Google. Ejemplos

Post by softruz »

Ahora estoy con la API de contactos, cuando tenga algo lo comparto.

Un Saludo.
User avatar
driessen
Posts: 1239
Joined: Mon Oct 10, 2005 11:26 am
Location: Genk, Belgium

Re: API Google. Ejemplos

Post by driessen »

Hello,

Please, could anyone put a translation of this topic in English in the English forum?

Thank you very much in advance.
Regards,

Michel D.
Genk (Belgium)
_____________________________________________________________________________________________
I use : FiveWin for (x)Harbour v. 21.01 - Harbour 3.2.0 (October 2020) - xHarbour Builder (January 2020) - Bcc7
User avatar
Silvio.Falconi
Posts: 4956
Joined: Thu Oct 18, 2012 7:17 pm

Re: API Google. Ejemplos

Post by Silvio.Falconi »

Application
===========
Path and name: C:\work\errori\google\test.Exe (32 bits)
Size: 1,781,248 bytes
Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6715)
FiveWin Version: FWHX 12.03
Windows version: 5.1, Build 2600 Service Pack 2

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 01/16/13, 09:22:34
Error description: Error MSXML2.XMLHTTP/3 DISP_E_MEMBERNOTFOUND: SEND
Args:
[ 1] = C Email=silvio.falconi@gmail.com&Passwd=..............&source=project-example-1&service=cl

Stack Calls
===========
Called from: source\rtl\win32ole.prg => TOLEAUTO:SEND( 0 )
Called from: test.prg => SENDPOSTTOURL( 46 )
Called from: test.prg => MAIN( 13 )
I use : FiveWin for Harbour August 2020 (Revision) - Harbour 3.2.0dev (r1712141320) - Bcc7.30 - xMate ver. 1.15.3 - PellesC
softruz
Posts: 485
Joined: Fri Feb 09, 2007 10:34 am

Re: API Google. Ejemplos

Post by softruz »

Silvio el mismo codigo con la FWH901 y FWH1204 me funciona perfectamente, con la FWH1203 no lo he probado pero supongo que debe funcionar.

Postea tu código y lo miramos.

Un Saludo.
User avatar
armando.lagunas
Posts: 340
Joined: Mon Oct 05, 2009 3:35 pm
Location: Curico-Chile
Contact:

Re: API Google. Ejemplos

Post by armando.lagunas »

Code: Select all

Try
oOle := CreateObject( 'MSXML2.XMLHTTP' )
Catch
oOle := CreateObject( 'Microsoft.XMLHTTP' )
End
 
también me da error...
:(
User avatar
sambomb
Posts: 385
Joined: Mon Oct 13, 2008 11:26 am
Location: Itaocara - RJ - Brasil
Contact:

Re: API Google. Ejemplos

Post by sambomb »

Como usar com proxy?
Email: SamirSSabreu@gmail.com
MSN: SamirAbreu@hotmail.com
Skype: SamirAbreu
xHarbour 1.1.0 + FwXh 8.02
xHarbour 1.2.1 + Fwhh 10.6
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: API Google. Ejemplos

Post by hmpaquito »

Silvio,

He encontrado este codigo desde https://groups.google.com/forum/?fromgr ... 4IETfJ6e0J

A ver si te puede servir.
But, we can use WebServices
I use for government and for my city
see a example for send a xml with many invoices
Load xml
cXML := memoread('nfse\11072432000124_I_20117-27_26072011.xml')
cXML := STRTRAN( cXML, '<?xml version="1.0" encoding="ISO-8859-1"?>', '' )
cXML := STRTRAN( cXML, "<", "<" )
cXML := STRTRAN( cXML, ">", ">" )
Load DOMDocument
xmldom = win_oleCREATEOBJECT("MSXML2.DOMDocument.5.0")
xmldom:async = .T.
xmldom:validateOnParse = .T.
xmldom:resolveExternals := .T.
xmldom:preserveWhiteSpace = .T.

Load XMLHTTP
xmldoc = win_oleCREATEOBJECT("MSXML2.XMLHTTP.6.0")
url := "http://189.1.164.238:8080/issonline/servlet/anfse"
Conect to WebService
xmldoc:open("POST", url, .F.)
xmldoc:setrequestheader("Content-Type","application/x-www-form-urlencoded")
xmldoc:setRequestHeader("SOAPAction", "nfseaction/ANFSE.Execute" )
Making XML for WebService
Texto := '<?xml version="1.0" encoding="ISO-8859-1"?>'
Texto += '<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"';
+ ' xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="nfse" xmlns:wsdlns="nfse" xmlns:tns1="ISS">'
Texto += '<SOAP-ENV:Body>'
Texto += '<wsdlns:Nfse.Execute xmlns:wsdlns="nfse">'
Texto += '<wsdlns:Operacao>1</wsdlns:Operacao>'
Texto += '<wsdlns:Usuario>21312</wsdlns:Usuario>' //
Texto += '<wsdlns:Senha>321321321321</wsdlns:Senha>'
Texto += '<wsdlns:Webxml>'+cXML+''
Texto += '</wsdlns:Webxml>'
Texto += '</wsdlns:Nfse.Execute>'
Texto += '</SOAP-ENV:Body>'
Texto += '</SOAP-ENV:Envelope>'

xmldom:LoadXML(Texto)
IF xmldom:parseError:errorCode = 0
//"XML Load"
ELSE
lcErrorMsg = "Não foi possível carregar o documento pois ele não corresponde ao seu Schema"
lcErrorMsg = lcErrorMsg + " Linha: " + STR(xmldom:parseError:line)
lcErrorMsg = lcErrorMsg + " Caractere na linha: " + STR(xmldom:parseError:linepos)
lcErrorMsg = lcErrorMsg + " Causa do erro: " + xmldom:parseError:reason;
+"code: "+STR(xmldom:parseError:errorCode)
msginfo(lcErrorMsg)
ENDIF
Send data to WebService
xmldoc:send(xmldom:xml)
Get Result
cResult := xmldoc:responseXML:xml

Best Regards,
Fernando Athayde
From Brazil

Saludos

Silvio.Falconi wrote:Application
===========
Path and name: C:\work\errori\google\test.Exe (32 bits)
Size: 1,781,248 bytes
Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6715)
FiveWin Version: FWHX 12.03
Windows version: 5.1, Build 2600 Service Pack 2

Time from start: 0 hours 0 mins 0 secs
Error occurred at: 01/16/13, 09:22:34
Error description: Error MSXML2.XMLHTTP/3 DISP_E_MEMBERNOTFOUND: SEND
Args:
[ 1] = C Email=silvio.falconi@gmail.com&Passwd=..............&source=project-example-1&service=cl



Stack Calls
===========
Called from: source\rtl\win32ole.prg => TOLEAUTO:SEND( 0 )
Called from: test.prg => SENDPOSTTOURL( 46 )
Called from: test.prg => MAIN( 13 )
User avatar
acuellar
Posts: 1312
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: API Google. Ejemplos

Post by acuellar »

Gracias Softru por compartir.

Funciona perfecto.

Saludos,

Adhemar
Saludos,

Adhemar C.
User avatar
Andrés González
Posts: 625
Joined: Thu Jan 19, 2006 10:45 am
Location: Mallorca

Re: API Google. Ejemplos

Post by Andrés González »

Softruz, no sé quien eres, pero te agradezco esta contribución, creo que este es el camino que debemos seguir y recuerdo un mensaje que puse en el 2010, referente a este tema: http://forums.fivetechsupport.com/viewt ... =15#p98540.

Bien, este es un buen punto de partida y ya veo que mis palabras ya tenían sentido, quiero hacerte un par de consultas, a ver si puedes ilustrarme. El ejemplo me ha funcionado perfecto y ya lo tengo implementado para que funcione en mi calendario particular. Una cosa que no he resuelto es el tema del calendario y la contraseña de cada uno, si quiero que se haga de forma automática en cada uno. Te cuento las variantes que tengo a ver si me puedes decir como hacerlo.

He desarrollado un gestor de tareas corporativo con FW y tiro de una base de datos donde tengo los usuarios, supongo que ahí es el lugar indicado para que cada uno se identifique y guarde los datos encriptados de cada uno, a no ser que creas mejor una opción como cookies o algo parecido. Cuando he dado de alta tu ejemplo en mi calendario, me he dado cuenta que también contamos con un gestor de tareas con nuestro gmail. ¿Sabes cual es el método para dar de alta la tarea en este proceso? Supongo que has investigado mas que yo y igual podemos reciclar el ejemplo para dar las tareas en este nuevo calendario. Esto aparece en la parte izquierda de tu gmail y te añade el calendario de tareas pero no es una dirección de correo, tan solo pone lista de tareas cuando vas a Calendar. Tiene su propio gestor, pero me imagino que ahí también lo podemos referenciar para dar de alta tareas desde un programa FW.

PD.: http://support.google.com/calendar/bin/ ... &ctx=topic Ahí tenemos la información de tareas.
Saludos

Andrés González desde Mallorca
Post Reply