Usare Google Drive in Ruby

Mattepuffo's logo
Usare Google Drive in Ruby

Usare Google Drive in Ruby

Google mette a disposzione parecchie API per i suoi servizi; oggi vediamo come usare quelle per Google Drive con Ruby!

Il punto di partenza, per qualsiasi API, è creare un progetto; potete iniziare con il wizard ufficiale.

Poi andate nella sezione Libreria ed attivate le API che volete; GDrive richiede delle credenziali, che potete creare nella sezione Credenziali.

Create quelle di tipo OAuth; una volta fatto dovete scaricare il file in formato JSON (sempre dalla pagina Credenziali), e salvatelo da qualche parte.

Adesso installiamo la gem per Ruby:

$ gem install google-api-client -v '~> 0.8'

Su alcune distro potrebbero servirvi privilegi elevati.

A questo punto creaimo il nostro file Ruby:

require 'google/apis/drive_v3'
require 'googleauth'
require 'googleauth/stores/file_token_store'
require 'fileutils'

OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'.freeze
APPLICATION_NAME = 'Mp TEST DRIVE'.freeze
CLIENT_SECRETS_PATH = '/home/matte/client_secret.json'.freeze
CREDENTIALS_PATH = '/home/matte/token.yaml'.freeze
SCOPE = Google::Apis::DriveV3::AUTH_DRIVE_METADATA_READONLY

def authorize
  client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
  token_store = Google::Auth::Stores::FileTokenStore.new(file: CREDENTIALS_PATH)
  authorizer = Google::Auth::UserAuthorizer.new(client_id, SCOPE, token_store)
  user_id = 'default'
  credentials = authorizer.get_credentials(user_id)
  if credentials.nil?
    url = authorizer.get_authorization_url(base_url: OOB_URI)
    puts 'Seguire il link per autorizzare il programma: ' + url
    code = gets
    credentials = authorizer.get_and_store_credentials_from_code(
      user_id: user_id, code: code, base_url: OOB_URI
    )
  end
  credentials
end

service = Google::Apis::DriveV3::DriveService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize

response = service.list_files(page_size: 10, 
 fields: 'nextPageToken, files(id, name)')
puts 'I TUOI FILES:'
puts 'NESSUN FILE TROVATO!' if response.files.empty?
response.files.each do |file|
  puts "#{file.name} (#{file.id})"
end

Rispetto ad altri linguaggi, al primo avvio non si aprirà il browser, ma verrà mostrato il link da seguire; rimarrà in ascolto fino a che non avete finito la procedura.

Apritelo e autorizzate il programma usando le vostre credenziali Gmail.

Poi copiate il codice di autorizzazione dentro al file token.yaml; dopo di che il programma dovrebbe proseguire da solo.

Se avete fatto tutto corretto, dovreste vedere la lista degli ultimi 10 files modificati.

Enjoy!


Condividi

Commentami!