Aviso: esta página é sobre as APIs mais antigas do Google, as APIs Google Data. Ela é relevante apenas para as APIs listadas no diretório de APIs Google Data, muitas das quais foram substituídas por APIs mais recentes. Para informações sobre uma nova API específica, consulte a documentação dela. Para informações sobre como autorizar solicitações com uma API mais recente, consulte Autenticação e autorização de contas do Google.
Ryan Boyd, equipe de APIs de dados do GoogleSetembro de 2007
- Introdução
- Como obter e instalar o cURL
- Como autenticar um serviço de dados do Google
- Como recuperar feeds e entradas
- Como atualizar entradas
- Como criar entradas
- Excluir entradas
- Como fazer upload de objetos de mídia
- Outras ferramentas de linha de comando
- Conclusão
Introdução
Basicamente, as APIs de dados do Google usam feeds e entradas Atom (XML) como um formato de dados e HTTP como um protocolo para transmissão de dados, estendendo o protocolo de publicação Atom. Publicamos várias bibliotecas de cliente para facilitar a interação com as APIs de dados do Google. No entanto, você sempre pode usar ferramentas de nível inferior para trabalhar com nossos serviços, e isso é bem fácil de fazer com um pouco de orientação.
O cURL é um aplicativo de linha de comando para fazer solicitações usando vários protocolos, incluindo HTTP. Ele é usado com frequência por desenvolvedores para testar os serviços de dados do Google, já que oferece suporte à funcionalidade HTTP necessária para interagir com as APIs em um nível baixo.
O cURL oferece suporte apenas para a comunicação HTTP. Portanto, é necessário conhecer o protocolo de dados do Google, o protocolo específico do serviço e o formato de dados XML usado para trabalhar com o aplicativo. Outras ferramentas são mencionadas neste artigo para facilitar essas tarefas.
Este artigo usa exemplos baseados na Picasa Web Albums Data API. No entanto, todos esses exemplos podem ser facilmente aplicados a outras APIs de dados do Google.
Como receber e instalar o cURL
O cURL geralmente está disponível em uma instalação padrão de muitas plataformas UNIX/Linux. Tente digitar curl
no seu shell favorito para ver se a ferramenta está instalada e no seu PATH
. Se você não tiver a ferramenta instalada, acesse a página de download no site do cURL para acessar a fonte oficial ou um pacote binário contribuído por um usuário. A ferramenta de linha de comando usa a biblioteca libcurl
, que pode ser oferecida como um pacote de download separado. Portanto, se você não estiver compilando da origem, faça o download de um pacote "binário" em vez de um pacote "libcurl". Os pacotes habilitados para SSL são necessários se você quiser usar o cURL para adquirir tokens de autenticação ou acessar alguns serviços de dados do Google que exigem o uso de SSL para solicitações.
Como autenticar em um serviço de dados do Google
As solicitações autenticadas de dados do Google são feitas adicionando um cabeçalho HTTP à solicitação que contém um token de autenticação ClientLogin (apps para computador/dispositivos móveis) ou AuthSub (apps da Web). Para fins de teste usando cURL, o ClientLogin é o método mais fácil e está documentado abaixo. Os cabeçalhos de autenticação AuthSub podem ser usados com cURL, mas o processo mais avançado de obtenção dos tokens está fora do escopo deste artigo.
Como usar o ClientLogin
O ClientLogin é destinado a aplicativos instalados (computador/dispositivo móvel). Com esse método de autenticação, o aplicativo que usa as APIs Google Data processa diretamente o nome de usuário e a senha do usuário.
Uma solicitação de autenticação para ClientLogin usa um nome de usuário, uma senha e um nome de serviço como variáveis de postagem de formulário. Essas variáveis são transmitidas como os argumentos Email
, Passwd
e service
, respectivamente. Essa solicitação gera uma resposta com vários tokens, um dos quais pode ser usado para fazer solicitações ao serviço de dados do Google. Os argumentos de dados transmitidos com curl
precisam ser codificados para URL se contiverem caracteres não ASCII, que geralmente aparecem nos argumentos Email
e Passwd
. Você pode pedir para o curl
codificar esses argumentos em URL usando a flag --data-urlencode
.
Exemplo de solicitação:
curl https://www.google.com/accounts/ClientLogin \ --data-urlencode Email=brad.gushue@example.com --data-urlencode Passwd=new+foundland \ -d accountType=GOOGLE \ -d source=Google-cURL-Example \ -d service=lh2
Exemplo de resposta:
SID=DQAAAHYBADCv2pSv7nflacDNwz3zEDUGtrSvNVDcpkSfddi77b3U5sEaHmP8YLWhmA36F9rk85mL8J5dqo4apn0T1vKz0fPGI9Xtnuet6cuE2ZzYvrNIwbSC_HjTqF4zudNQnnlDuD2wqZT-g1qXI8KhGAQZV4NexHZoQPlabTsGuRZeIBxj1A LSID=EUBBBIaBADCl-kNxvRVmcQghpt3cqSMfEooKR9flLOUZqwgP9OrZS83gse-KSdTNeXhxsET7FYenDhceP9lIPOmesH-t9qh-AWUHjjMdZEbUNeF9mWyzln6Z-FajaiG-cVFkqW0ZJ8ZbnCP30xXj6xFK6QxaAcqy_9Pej8jhEnxS9E61ftQGPg Auth=EUBBIacAAADK-kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxsET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfagZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh
Consulte a documentação do ClientLogin para informações específicas sobre os parâmetros usados na solicitação acima. Neste exemplo, o serviço usado é a Picasa Web Albums Data API. O nome do serviço (service
) é lh2
. Os nomes de serviço de outros serviços de dados do Google podem ser encontrados na página de Perguntas frequentes sobre as APIs de dados do Google.
O valor do token Auth
na resposta acima é o único necessário para autenticação nos serviços de dados do Google. O valor desse token é formado em um cabeçalho HTTP, que é usado em cada solicitação para um serviço de dados do Google.
curl --silent --header "Authorization: GoogleLogin auth=EUBBIacAAADK\ -kNxvRVmcQghpt3cqSMfEooLNMflLNIQqwgP9OrZS83gs-KSdTNeXhxs\ ET7FYePWmaD8Vsy1V4LSUGMUP48Je2TO8OcjBj6HgAtPhiZeX-gKDfag\ ZDK44j4n-Tkb44nhOnp2_QPSnBj3Z2vYwOEDjjG3Q53aQVC2132JKOuGh" \ "http://picasaweb.google.com/data/feed/api/user/default"
Observação: o método de inserir caracteres de escape de nova linha com barras invertidas (\) acima não funciona no shell de comando do Windows. Portanto, insira todo o comando em uma linha se você estiver executando curl
no Windows.
Como recuperar feeds e entradas
Nas APIs de dados do Google, a recuperação de feeds e entradas é feita com um GET
HTTP em um URL, com um conjunto opcional de parâmetros de consulta. Como estamos fazendo uma solicitação GET
, apenas o cabeçalho de autenticação e o URL precisam ser transmitidos para curl
. O exemplo abaixo vai continuar usando a Picasa Web Albums Data API e é usado para recuperar uma lista de álbuns pertencentes ao usuário autenticado. Neste exemplo, abreviamos o token de autenticação para ABCDEFG
, mas o token completo (por exemplo, EUBBIacA
...32JKOuGh
acima) deve ser usado no lugar dele.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default"
Isso vai retornar um blob XML não formatado:
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'><id>http://picasaweb.google.com/data/feed/base/user/brad.gushue</id><updated>2007-09-13T21:30:21.454Z</updated>...</entry></feed>
Existem algumas ferramentas boas para formatar essa saída e torná-la mais legível, incluindo o tidy (em inglês). A maneira mais fácil de usar o tidy é redirecionar a saída do comando curl para o tidy, como mostrado abaixo:
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/default" | tidy -xml -indent -quiet
Isso resulta em um feed muito mais legível, como este:
<?xml version='1.0' encoding='utf-8'?> <feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'> <id>http://picasaweb.google.com/data/feed/api/user/brad.gushue</id> <updated>2007-09-13T21:47:07.337Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#user' /> <title type='text'>brad.gushue</title> <subtitle type='text'></subtitle> <icon> http://lh6.google.com/brad.gushue/AAAAj9zigp4/AAAAAAAAAAA/RiMAlXV4MFI/s64-c/brad.gushue</icon> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue?start-index=1&max-results=1000' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <generator version='1.00' uri='http://picasaweb.google.com/'> Picasaweb</generator> <openSearch:totalResults>8</openSearch:totalResults> <openSearch:startIndex>1</openSearch:startIndex> <openSearch:itemsPerPage>1000</openSearch:itemsPerPage> <gphoto:user>brad.gushue</gphoto:user> <gphoto:nickname>Brad</gphoto:nickname> <gphoto:thumbnail> http://lh6.google.com/brad.gushue/AAAAj9zigp4/AAAAAAAAAAA/RiMAlXV4MFI/s64-c/brad.gushue</gphoto:thumbnail> <entry> <id> http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593</id> <published>2007-05-23T04:55:52.000Z</published> <updated>2007-05-23T04:55:52.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Trip To Italy</title> <summary type='text'>This was the recent trip I took to Italy.</summary> <rights type='text'>public</rights> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/9810315389720904593' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue/TripToItalyV2' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593' /> <link rel='edit' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <gphoto:id>9810315389720904593</gphoto:id> <media:group> ... </media:group> </entry> <entry> ... </entry> </feed>
As entradas individuais podem ser recuperadas da mesma forma, fornecendo o URL da entrada em vez de um URL de feed.
Atualizar entradas
As entradas nas APIs de dados do Google são atualizadas fazendo um HTTP PUT
para o URL de edição com uma nova cópia do XML da entrada no corpo da solicitação.
- Recupere a entrada usando o valor do URL
atom:link/@rel='self'
. - Atualize a entrada localmente para fazer as mudanças necessárias.
PUT
a entrada de volta ao servidor usando o valor do URLatom:link/@rel='edit'
.
1. Como recuperar a entrada
A entrada pode ser recuperada usando um dos dois URLs em negrito no bloco de feed acima. O URL necessário é o valor href
do elemento link
com um rel='self'
.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593"
2. Atualizar a entrada localmente
Depois de recuperar a entrada, ela precisa ser atualizada usando um editor de texto ou aplicativo local para fazer as mudanças necessárias. No comando acima para recuperar uma entrada, não transmitimos os resultados para tidy
, como fizemos nos exemplos anteriores. O resultado é um XML que representa os mesmos dados, mas tem uma formatação diferente da versão transmitida para tidy
. Para editar uma entrada manualmente, usar tidy
geralmente facilita o trabalho com o XML.
Observação: inclua todas as definições de namespace XML usadas como atributos no atom:entry
ao postar sua nova entrada. Se você omitir esses elementos, vai causar exceções de análise. Além disso, tidy
vai substituir os espaços entre as definições de namespace por caracteres de nova linha. Embora seja um XML válido, os Serviços de dados do Google não o aceitam no momento. Se você estiver usando tidy
, adicione espaços extras entre esses atributos no elemento entry
.
3. Atualizar a entrada no servidor
Usando o URL edit
, é necessário PUT
uma cópia da entrada para o serviço usando cURL. É necessário adicionar um cabeçalho para indicar o tipo de conteúdo que está sendo enviado ao servidor. O snippet a seguir pressupõe que o arquivo com a entrada atualizada esteja salvo em updated_entry.xml.
curl --silent --data-binary "@updated_entry.xml" --request PUT --header "Content-Type: application/atom+xml" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Como criar entradas
As entradas nas APIs de dados do Google são criadas fazendo um HTTP POST
para o URL de postagem com uma nova entrada. O atom:id
é atribuído pelo servidor e, portanto, não precisa ser incluído em novas entradas. A maneira mais fácil de criar uma nova entrada é pegar uma antiga e modificá-la. O exemplo a seguir faz exatamente isso.
- Recupere uma entrada de modelo usando o
atom:link/@rel='self'
- Modifique a entrada do modelo localmente para remover informações desnecessárias e fazer as mudanças necessárias.
POST
a entrada de volta ao servidor usando o URLpost
do feed. Ele pode ser encontrado no feed recuperado como o valorhref
do elementolink
com umrel='http://schemas.google.com/g/2005#post'
ou na documentação do serviço em http://code.google.com.
1. Recuperar uma entrada de modelo
Uma única entrada pode ser recuperada usando o valor href
de um elemento link
com um rel='self'
da mesma forma que uma entrada foi recuperada antes de ser atualizada no exemplo acima.
curl --silent --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593" | tidy -xml -indent -quiet > template_entry.xml
A resposta após usar tidy
será semelhante a esta:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:exif='http://schemas.google.com/photos/exif/2007' xmlns:geo='http://www.w3.org/2003/01/geo/wgs84_pos#' xmlns:gml='http://www.opengis.net/gml' xmlns:georss='http://www.georss.org/georss' xmlns:photo='http://www.pheed.com/pheed/' xmlns:media='http://search.yahoo.com/mrss/' xmlns:batch='http://schemas.google.com/gdata/batch' xmlns:gphoto='http://schemas.google.com/photos/2007'> <id> http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981</id> <published>2007-05-23T04:55:52.000Z</published> <updated>2007-05-23T04:55:52.000Z</updated> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Trip To Italy</title> <summary type='text'>This was the recent trip I took to Italy.</summary> <rights type='text'>public</rights> <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/9810315389741123981' /> <link rel='alternate' type='text/html' href='http://picasaweb.google.com/brad.gushue/TripToItaly' /> <link rel='self' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981' /> <link rel='edit' type='application/atom+xml' href='http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389741123981/1179896152905401' /> <author> <name>Brad</name> <uri>http://picasaweb.google.com/brad.gushue</uri> </author> <gphoto:id>9810315389741123981</gphoto:id> <gphoto:name>TripToItaly</gphoto:name> <gphoto:location></gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:timestamp>1179896152000</gphoto:timestamp> <gphoto:numphotos>0</gphoto:numphotos> <gphoto:numphotosremaining>500</gphoto:numphotosremaining> <gphoto:bytesUsed>0</gphoto:bytesUsed> <gphoto:user>brad.gushue</gphoto:user> <gphoto:nickname>Brad</gphoto:nickname> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> <gphoto:commentCount>0</gphoto:commentCount> <media:group> <media:title type='plain'>Trip To Italy</media:title> <media:description type='plain'>This was the recent trip I took to Italy.</media:description> <media:keywords></media:keywords> <media:content url='http://lh5.google.com/brad.gushue/ADFUFKqeA5E/AAAAAAAAABc/V6Sga_Z03WU/TripToItaly.jpg' type='image/jpeg' medium='image' /> <media:thumbnail url='http://lh5.google.com/brad.gushue/ADFUFKqeA5E/AAAAAAAAABc/V6Sga_Z03WU/s160-c/TripToItaly.jpg' height='160' width='160' /> <media:credit>Brad</media:credit> </media:group> </entry>
2. Modificar a entrada do modelo
Vamos criar um álbum chamado "Curling no Canadá" com fotos da nossa partida recente de curling. O Google Data permite descartar elementos Atom que o servidor fornece valores. Portanto, para criar essa entrada de modelo simples, vamos remover os elementos atom:id
, atom:published
, atom:updated
, atom:author
e os vários elementos atom:link
no feed. Isso vai nos dar uma entrada de modelo simplificada. A entrada precisa ser modificada para representar o novo álbum que estamos criando:
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Curling in Canada</title> <summary type='text'>Pictures of all my curling matches in Canada.</summary> <gphoto:location>Canada</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> </entry>
Observação: inclua todas as definições de namespace XML usadas como atributos no atom:entry
ao postar sua nova entrada. Se você omitir esses elementos, vai causar exceções de análise. Além disso, tidy
vai substituir os espaços entre as definições de namespace por caracteres de nova linha. Embora seja um XML válido, os Serviços de dados do Google não o aceitam no momento. Se você estiver usando tidy
, adicione espaços extras entre esses atributos no elemento entry
.
3. Postar a nova entrada no servidor
O comando curl
para postar uma nova entrada no servidor é muito semelhante à atualização de uma entrada existente, exceto que o URL é diferente:
curl --silent --request POST --data-binary "@template_entry.xml" --header "Content-Type: application/atom+xml" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue" | tidy -xml -indent -quiet
Se a postagem for bem-sucedida, a saída XML resultante será uma cópia da entrada recém-criada. Essa entrada vai incluir itens gerados pelo servidor no momento da criação, incluindo os valores dos elementos atom:id
, atom:published
, atom:updated
e atom:link
. Os valores link
resultantes podem ser usados para editar ou excluir a entrada, desde que nenhuma outra mudança seja feita nesse período.
Como excluir entradas
A exclusão de entradas é muito semelhante à atualização, exceto que um método HTTP DELETE
é usado em vez de um HTTP PUT
e nenhum dado precisa ser enviado. Assim como na solicitação de atualização, o URL edit
é usado como destino da solicitação HTTP.
curl --silent --request DELETE --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/entry/api/user/brad.gushue/albumid/9810315389720904593/123456"
Como fazer upload de objetos de mídia
Um recurso importante das APIs Picasa Web Albums Data e Documents List Data é a capacidade de fazer upload de objetos binários. O cURL pode fazer upload de dados binários e um cabeçalho de slug com facilidade. No entanto, a API de dados da lista de documentos exige atualmente o envio do XML com os dados binários como uma mensagem MIME de várias partes. A criação da mensagem multipart está fora do escopo deste artigo.
O exemplo abaixo mostra como fazer upload de uma foto chamada sweeping_the_rock.png
para um álbum da Web do Picasa com o título "Varrendo a pedra":
curl --silent --request POST --data-binary "@sweeping_the_rock.png" --header "Slug: Sweeping the rock" --header "Content-Type: image/png" --header "Authorization: GoogleLogin auth=ABCDEFG" "http://picasaweb.google.com/data/feed/api/user/brad.gushue/albumid/5113621341847124417" | tidy -xml -indent -quiet
Outras ferramentas de linha de comando
Alguns desenvolvedores preferem aprender ou depurar usando outras ferramentas de linha de comando.
Algumas ferramentas conhecidas incluem:
- telnet e openssl são usados para fazer conexões de soquete brutas (texto simples e baseadas em SSL, respectivamente) com servidores da Web e podem ser usados para interagir com os serviços de dados do Google. Nem todos os serviços de dados do Google são compatíveis com SSL. Para abrir as conexões:
telnet picasaweb.google.com 80
(API de dados dos Álbuns da web do Picasa)openssl s_client -connect www.google.com:443
(API Google Calendar Data e outros serviços em www.google.com)
Ao enviar dados HTTP brutos, saiba que as operaçõesPOST /data/feed/api/user/brad.gushue HTTP/1.1 Host: picasaweb.google.com Authorization: GoogleLogin auth=ABCDEFG Content-Length: 493 <entry xmlns='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007'> <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/photos/2007#album' /> <title type='text'>Curling in Canada</title> <summary type='text'>Pictures of all my curling matches in Canada.</summary> <gphoto:location>Canada</gphoto:location> <gphoto:access>public</gphoto:access> <gphoto:commentingEnabled>true</gphoto:commentingEnabled> </entry>
POST
ePUT
exigem o cálculo do valor de um cabeçalhoContent-Length
. Você pode usar a ferramenta UNIXwc
para calcular esse valor. Coloque todo o conteúdo do corpo HTTP em um arquivo de texto, comotemplate_entry.xml
(exemplo usado acima), e executewc -c template_entry.xml
. Muitas vezes, é difícil depurar se você usar um valor incorreto para o cabeçalhoContent-Length
por engano. - O wget geralmente é usado para baixar dados de um servidor da Web para um arquivo local. No entanto, o
wget
tem muitas opções que o tornam capaz de realizar todos os diferentes tipos de solicitações necessárias para interagir com os serviços de dados do Google. Veja um exemplo de como usarwget
paraPOST
uma nova entrada de álbum nos Álbuns da Web do Picasa:wget --post-file template_entry.xml --header "Authorization: GoogleLogin auth=ABCDEFG" --header "Content-Type: application/atom+xml" "http://picasaweb.google.com/data/feed/api/user/brad.gushue"
- O xsltproc é uma ferramenta para aplicar transformações XSL (XSLT) a documentos XML. Ele pode ser usado para extrair facilmente os bits de dados desejados de uma entrada ou feed XML retornado pelas APIs Google Data ou para gerar entradas novas ou atualizadas.
Conclusão
Como você viu, o cURL e várias outras ferramentas de linha de comando podem ser usados para interagir facilmente com os serviços de dados do Google usando XML e HTTP brutos. Participe dos fóruns específicos da API se tiver dúvidas sobre como usar essas ferramentas com sua API de dados do Google favorita.