2015-04-15 116 views
0

我一直在使用Google Drive Ruby gem來訪問Google電子表格中的信息,並且隨着即將棄用的許多內容,我們不得不升級,現在不能升級再登錄有一個簡單的用戶名和密碼(我明白這是被棄用太)Google Drive Ruby - 通過服務帳戶訪問文件

翻轉各種選項,使某些咒語後,我已經成功通過OAuth獲得登錄像這樣:

client = Google::APIClient.new(application_name: 'Google Drive Ruby test', application_version: '0.0.1') 
key = Google::APIClient::KeyUtils.load_from_pkcs12(
    'config/key.p12', 
    ENV['GAPPS_KEY_PASSWORD'] 
) 

asserter = Google::APIClient::JWTAsserter.new(
    ENV['GAPPS_SERVICE_ACCOUNT_EMAIL'], 
    ['https://www.googleapis.com/auth/drive'], 
    key 
) 

client.authorization = asserter.authorize 
auth_token = client.authorization.access_token 

google_drive = GoogleDrive.login_with_oauth(access_token) 

這工作正常,但是,我似乎只能作爲我的服務帳戶,所以不能訪問文件th在其他用戶有權訪問。例如:

google_drive.spreadsheet_by_key("18rNqAz3R0hhp7OYEPLU8thGHsUR0jgYgHk3zQ8CWL-4") 

返回:

Google::APIClient::ClientError: File not found: 18rNqAz3R0hhp7OYEPLU8thGHsUR0jgYgHk3zQ8CWL-4 

據我所知,您可以根據給定用戶採取行動,但儘管通過文檔拖網,我似乎並沒有能夠得到這個工作。有任何想法嗎?

+0

服務帳戶不是爲此(這是2腿的oauth2)。你需要一個客戶端流程(3 leg oauth2),最終存儲每個用戶的刷新令牌並使用它們訪問THEIR驅動器中的數據。對不起,我不熟悉Ruby的一面。 –

+0

@Pezholio ...你有解決這個問題嗎?有同樣的問題 – Mutuma

回答

0

你必須與該客戶的郵件編號共享電子表格 - ENV['GAPPS_SERVICE_ACCOUNT_EMAIL']

否則您將無法即使您有一個有效的令牌訪問任何東西。

相關問題