2015-05-19 17 views
6

Ich versuche, den Inhalt einer Google Drive-Tabelle zu erhalten, aber ich kann kein Juwel finden, das es leicht machen kann. Ich habe versucht google-drive-ruby, aber es beinhaltet einen Schritt, in dem ich ein Authentifizierungs-Token von Googles Website bekommen muss. Das ist nicht sehr hilfreich, da ich all diese Server-Seite machen muss. Anscheinend gab es eine Login-Methode in früheren Versionen des Edelsteins, wurde aber entfernt.Zugriff auf eine Google Drive-Kalkulationstabelle in Ruby on Rails

Gibt es eine Möglichkeit, dies zu tun? Muss ich OAuth verwenden, um ein Token zu erhalten und dieses Token an Google-Laufwerk-Ruby übergeben?

Antwort

12

Ich habe es geschafft, eine Antwort auf Reddit zu bekommen. Sie benötigen ein Dienstkonto und teilen das Dokument mit der E-Mail Ihrer Dienstanwendung. Der p12 Schlüssel muss auch irgendwo gespeichert werden.

# 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