2015-05-19 19 views
6

Bir Google Drive e-tablosunun içeriğini almaya çalışıyorum ancak bunu kolayca yapabilecek bir mücevher bulmuyorum. google-drive-ruby'u denedim, ancak Google'ın web sitesinden bir auth jetonu almam gereken bir adımı içeriyor. Tüm bu sunucu tarafını yapmak zorunda olduğum için bu çok yararlı değil. Görünüşe göre geminin önceki sürümlerinde bir giriş yöntemi vardı, ancak kaldırıldı.Ruby on Rails'e bir Google Drive e-tablosuna eriş

Bunu yapmanın bir yolu var mı? Bir jeton almak ve bu jetonu google-drive-ruby'ye iletmek için OAuth'u kullanmalı mıyım?

cevap

12

Reddit'e bir cevap almayı başardım. Hizmet Hesabı'na ve belgeyi servis uygulamanızın e-postasıyla paylaşmaya ihtiyacınız var. P12 anahtarının da bir yerde saklanması gerekir.

# 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