2015-05-19 14 views
6

Sto cercando di ottenere il contenuto di un foglio di calcolo di Google Drive, ma non riesco a trovare una gemma che possa farlo facilmente. Ho provato google-drive-ruby, ma comporta un passaggio in cui devo ottenere un token di autenticazione dal sito web di Google. Questo non è molto utile, poiché devo fare tutto questo lato server. Apparentemente c'era un metodo di accesso nelle versioni precedenti della gemma, ma è stato rimosso.Accesso a un foglio di calcolo di Google Drive in Ruby on Rails

C'è un modo per farlo? Devo usare OAuth per ottenere un token e passare quel token su google-drive-ruby?

risposta

12

Sono riuscito a ottenere una risposta su Reddit. È necessario un account di servizio e condividere il documento con l'e-mail dell'app del servizio. Anche la chiave p12 deve essere memorizzata da qualche parte.

# gem install google-api-client -v 0.8.6 # upper versions are not compatible with this code 

require "google/api_client" 

@email = "[email protected]" 
@key = "path/to/key.p12" 

key = Google::APIClient::KeyUtils.load_from_pkcs12(@key, 'notasecret') 

auth = Signet::OAuth2::Client.new(
    token_credential_uri: 'https://accounts.google.com/o/oauth2/token', 
    audience: 'https://accounts.google.com/o/oauth2/token', 
    scope: ["https://www.googleapis.com/auth/drive", "https://spreadsheets.google.com/feeds/"].join(' '), 
    issuer: @email, 
    access_type: 'offline', 
    signing_key: key 
) 

auth.fetch_access_token! 
puts auth.access_token