Blog

Trabalhando com arquivos no Google Drive

Esta API sua os recursos disponibilizados pelo Google, respeitando os termos de uso do serviço Google Drive API. Na versão gratuita são 15 GB de espaço para arquivos (09/2018).  (Consultar informações oficiais: https://www.google.com.br/drive/ )

Pré-requisitos

  • Conta no Google;
  • Webrun acessível na Internet (desejável);

Configurando um projeto na conta do Google

  1. Acesse o console de APIs do Google: http://console.developers.google.com
  2. Crie um novo projeto “NOVO PROJETO” / “NEW PROJECT“;
  3. Clique sobre o link “ATIVAR APIS E SERVIÇOS“;
  4. Procure por “Google Drive API“, clique  sobre a API do Drive em em seguida em “ATIVAR“;
  5. Adicione credenciais de acesso (Credentials) do tipo “OAuth 2.0” clicando em Credenciais > Criar Credenciais > ID do cliente OAuth, selecione o tipo de aplicativo “Aplicativo da Web“;
  6. Cadastrando a URL de retorno, apontando para um formulário do Maker ou Fluxo Web publicamente acessível, por exemplo:
    1. http://exemplos.l2servidores.com.br/webrun/form.jsp?sys=TEN&action=openform&formID=8338
    2. http://localhost:8087/api27/form.jsp?sys=TEN&action=openform&formID=8338
  7. Copie o “Client ID” e “Client secret” e informe no mapa com os nomes “client_id” e “client_secret” respectivamente;
  8. Informe a URL de retorno no item “redirect_uri“;

Usando as funções

O uso das funções devem seguir os seguintes blocos: Autorizar o acesso à conta, Envio e Download de arquivos, Listagem e pesquisa de arquivos, Cancelando/Revogando um acesso.

Autorizar o acesso à conta

Este passo libera o acesso das funções a uma conta no Google Drive. É o primeiro passo para utilização das demais rotinas da API.

A inicialização é feita com um mapa contendo os seguintes itens:

  • client_id
  • client_secret
  • redirect_uri
  • access_token (Letras) – Opcional/Em branco nesse passo;
  • refresh_token (Letras) – Opcional/Em branco nesse passo;
  • expire_at (Data e Hroas ou Letras) – Opcional/Em branco nesse passo.
  1. gDrive = Nuvem – Inicializar(‘GOOGLE-DRIVE‘, MAPA, ‘L2MAKER-EXEMPLO-CloudStorage-Atualizar Dados‘);
  2. Endereço = Nuvem – Obter URL de Autorização(gDrive);
  3. Após obter a URL você deve abrir a URL retornada em uma nova janela, nela o Google irá conduzir o processo de autenticação e autorização de acesso segundo a política de segurança do Google;
  4. Após concluído o processo de autorização o Google irá redirecionar para o endereço informado no inicio (“redirect_uri”), retornando o código de liberação;
  5. Para transformar o código de liberação em um token de acesso e um token de atualização você deve chamar a função “Nuvem – Processar Autorização(gDrive);” passando um mapa com os mesmo dados do Google Drive utilizados ao criar a URL de autenticação;
  6. Após validar a liberação de acesso no servidor do Google o fluxo de atualização de dados será disparado com os dados de acesso retornado. Este fluxo deve obter os dados de acesso no mapa e armazená-los em algum local persistente (tabela, arquivo, …). OBS: Podem estar em branco caso a liberação não seja válida.
  7. Após esse processo as demais instâncias do mapa com dados de acesso ao Drive devem conter todos os parâmetros preenchidos, incluindo: access_token, refresh_token, expire_at.
  8. O access_token se renova períodicamente, a API faz a chamada de forma transparente, e sempre que necessário executa o fluxo de atualização de dados passando os novos dados de acesso;
  9. Após criar a configuração do projeto você deve chamar a função que verifica o acesso (Nuvem – Autenticação valida(gDrive)) elá irá indicar se os dados de acesso à API continuam válidos, e permitirá enviar o usuário novamente à tela de liberação de acesso.

Revogando o acesso

Para cancelar o acesso a uma conta basta criar uma conexão com o Google Drive informando o access_token e refresh_token e chamando a funçao “Nuvem – Revogar Autorização“.

Envio de arquivos

Após criar uma instância da conexão com o Google Drive devidamente autorizada, basta executar a chamada à função “Nuvem – Enviar arquivo(gDrive, Arquivo local, ID remoto, Metadados)” onde:

  1. gDrive é o retorno da função “Nuvem – Inicializar”;
  2. Arquivo local é o caminho completo do arquivo no servidor (EX: C:\TEMP\meu-arquivo.zip);
  3. ID remoto é o código do arquivo a ser atuaizado, ou em branco para criar um novo arquivo;
  4. Metadados é um mapa com informações sobre o arquivo a ser enviado (Pode ser em branco).

O retorno dessa função será um mapa com:

  • ID (Letras) – Identificador único do arquivo no servidor;
  • SUCESSO (Lógico) – Identifica se a operação temrinou com sucesso;
  • TAMANHO (Inteiro) – Número de bytes do arquivo enviado;
  • NOME (Letras) – Nome do arquivo no servidor.

Consultando/Listando arquivos

Os arquivos no Google Drive podem ser consultados individualmente (por ID), ou pesquisado por nome/pasta.

Consultando por ID

Utilize a função “Nuvem – Obter informações do arquivo” passando a conexão com o Drive, e o ID do arquivo a ser consultado. Dica, você pode utilizar esta função para comparar que o MD5 do arquivo enviado e o recebido são os mesmo.

Consultando por nome

Você pode lista todos os arquivos da raiz, ou de uma pasta específica (pelo ID). Para tal utilize a função “Nuvem – Listar arquivos”, com os seguintes parâmetros:

  1. gDrive é o retorno da função “Nuvem – Inicializar”;
  2. Arquivo remoto (Letras) – Passe um barra invertida “/” para listar todos os arquivos e pastas na raiz. Ou o nume de um arquivo para retornar todos os arquivos remotos que contém aquele nome.
  3. O retorno desta função será uma lista de mapas, utilize as funções nativas de lista e mapa do Maker para percorrer os dados retornados, cada mapa irá conter os seguintes itens:
    • ID (Letras) – Identificador único do arquivo no servidor;
    • DIRETORIO (Lógico) – Identifica se o item é uma pasta;
    • TAMANHO (Inteiro) – Número de bytes do arquivo enviado;
    • NOME (Letras) – Nome do arquivo no servidor;
    • Md5 (Letras) – Hash MD5 do arquivo remoto.

Baixando ou removendo um arquivo

Para baixar um arquivo para o servidor (onde está o Webrun) utilize a função “Nuvem – Baixar arquivo”, informando o caminho completo do arquivo no servidor, e o ID do arquivo a ser copiado do Drive.

Para excluir um arquivo utilize a função “Nuvem – Deletar arquivo“, informando o ID do arquivo a ser excluído do servidor. Ação não tem como ser desfeita, utilize com cautela ou não adicione no seu projeto para evitar perda de dados. Arquivos enviados pela API podem ser removidos manualmente pela interface do Google Drive.

Solução de problemas

  • Error: redirect_uri_mismatch – Configure a URL completa do formulário ou fluxo de retorno.
  • Falta de acesso a API do Google Drive: Caso o projeto não tenha sido configurado para acessar as APIs do Google Drive será exibido uma mensagem de erro parecida com essa: Project XYZ is not found and cannot be used for API calls. If it is recently created, enable Drive API by visiting https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project=XYZ then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.

Leave a comment