【发布时间】:2018-02-05 01:26:19
【问题描述】:
问题:我创建了一个服务帐户来与我的组织的 Google Drive 和电子表格文件进行交互 - 我能够成功地创建到 google drive API 的会话。但是,我可以访问的唯一文件是这个样板文件:
=> [#]
您认为我缺少什么级别的权限?
我唯一剩下的想法是,还有一些其他顶级权限隐藏了组织外部的文件。即使服务帐户在文件上明确共享?如果有任何迹象,当我与服务帐户共享时,它确实会这样说。
可能与此文档中的以下图片有关?
https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority
我已经完成的步骤..
1) 我创建了一个具有域范围委派和项目编辑状态的服务帐户。
2) 我已邀请该服务帐户通过电子邮件发送到我希望它具有 API 访问权限的工作表
3) 我的组织的 gSuite 管理员已将此服务帐户的 client_id 添加到 /Security / Manage API Client Access.. 范围为 -> https://www.googleapis.com/auth/drive、https://spreadsheets.google.com/feeds
尝试了所有文档/教程中的所有组合。这是我的连接代码,基于https://www.twilio.com/blog/2017/03/google-spreadsheets-ruby.html。尝试传递 client_secret.json 中的范围。尝试使用服务帐户的 iam 角色工具。
session = GoogleDrive::Session.from_service_account_key("client_secret.json")
{
"type": "service_account",
"project_id": "gdrive-1231233",
"private_key_id": "food87c0bar16da9bfoooooo677bar",
"private_key": "-----BEGIN PRIVATE KEY-----\nsssEIEvQfooobarrrytyeho=\n-----END PRIVATE KEY-----\n",
"client_email": "servicebot@gdrive-foobar.iam.gserviceaccount.com",
"client_id": "foo40990211bar",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_foox_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_foox_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/servicebot%40gdrive-foobar.iam.gserviceaccount.com"
}
#<GoogleDrive::Session:0v3fc6c3e25061>
【问题讨论】:
标签: ruby-on-rails google-drive-api google-api-client service-accounts