Google Drive Ruby - 通过服务帐户访问文件

时间:2015-04-15 14:37:28

标签: ruby google-api google-drive-api

我一直在使用Google Drive Ruby gem来访问Google电子表格中的信息,并且随着大量内容的即将弃用,已被迫升级,现在无法再以简单的方式登录用户名和密码(我知道这也被弃用了)

在翻转各种选项并制作某些咒语后,我设法通过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)

这很好,但是,我似乎只能充当我的服务帐户,因此无权访问其他用户有权访问的文件。例如:

google_drive.spreadsheet_by_key("18rNqAz3R0hhp7OYEPLU8thGHsUR0jgYgHk3zQ8CWL-4")

返回:

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

我知道您可以充当给定的用户,但是尽管在文档中进行了拖网搜索,我似乎无法使其工作。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您必须使用此客户邮件ID分享您的电子表格 - ENV['GAPPS_SERVICE_ACCOUNT_EMAIL']

否则,即使您拥有有效的令牌,也无法访问任何内容。

相关问题