【问题标题】:Using Service User to upload files to Google Drive by email address使用服务用户通过电子邮件地址将文件上传到 Google Drive
【发布时间】:2018-04-02 17:05:26
【问题描述】:

我正在使用a service account credential 连接到服务帐户。

我正在尝试扩展它以供同一公司内的多个用户使用。所有用户都将拥有这家公司管理的 Google 帐户,而我将拥有整个公司的 gsuite 服务帐户。如何使用 gsuite 服务帐户根据电子邮件地址将文件上传到用户个人 Google Drive?

【问题讨论】:

  • 当您说“对用户个人 Google 云端硬盘”时,您是指他们在 GSuite 中的用户特定帐户,还是他们真正的个人云端硬盘?
  • 他们真正的个人驱动器,在我的驱动器下。
  • 抱歉,我不确定我是否说清楚了。例如,假设您是 Foo 公司的员工。您将拥有一个 Foo Drive 帐户,但您也可能拥有存储家庭照片等的个人 Drive 帐户。这就是我所说的“个人”的意思——与公司无关。我不希望 Foo 服务帐户访问该个人云端硬盘帐户。我的猜测是您的意思是“GSuite 中的个人云端硬盘”——对吗?
  • (请忽略现在删除的内容相同的评论...)
  • 嗯,好的,是的,该服务将访问该用户的 GSuite 驱动器。很抱歉造成误解。

标签: c# google-api google-drive-api google-api-dotnet-client


【解决方案1】:

您想使用ServiceAccountCredential,并将User 属性设置为适当的用户。

假设您使用GoogleCredential 加载凭据,这并不难。例如:

GoogleCredential credential = Google.GetApplicationDefault()
    .CreateScoped(...)
    .CreateWithUser("foo@bar.com");

如果您想为许多不同的用户使用相同的原始凭据,您可以保留CreateScoped(...) 的结果,只需调用CreateWithUser 为每个操作创建一个新的用户特定凭据。

【讨论】:

  • 感谢您提供的信息。我会试试的。如果可行,我会将其标记为答案。
  • 我在尝试使用CreateWithUser 时遇到了 TokenResponseException,但我相信这是我问题的答案。只需要正确配置服务帐户。标记为答案。
【解决方案2】:

使用 Oauth2,您必须让每个用户都对您的应用程序进行身份验证。这将使您可以直接访问他们的驱动器帐户。现在你说你有一个主用户。您可以只要求这些其他用户与主用户共享其 Google 云端硬盘帐户上的文件夹,然后它就可以访问。请注意,您不能共享根目录。

您可能需要考虑使用服务帐户而不是 oauth2,然后用户必须授予服务帐户访问其驱动器帐户的权限。

现在,如果这是一个 gsuite 用户,所有这些都可以使用服务帐户的域范围委派自动完成。

【讨论】:

  • 主服务帐户是 gsuite 用户,因此身份验证不会成为问题。问题是我无法找到允许我使用电子邮件地址来指定哪些用户开车将文件上传到的文档。
  • 您可能想编辑您的问题,然后提及您正在使用 gsuite 和服务帐户您咨询过这个吗? developers.google.com/admin-sdk/directory/v1/guides/delegation
  • 相应地编辑问题
  • 该教程中的代码是针对 oauth2 而不是服务帐户身份验证,您应该包含正确的代码
  • 我已经包含了一个链接,指向我用来设置服务帐户身份验证的内容。
【解决方案3】:

在我的工作中,我们有与您相同的场景,为了能够实现这种类型的集成,我们创建了一个为该帐户启用了广域委派的服务帐户。

这样我们就可以使用服务帐号代表他们访问用户数据。

但为此,在创建服务帐户凭据时,您必须模拟服务帐户凭据传递用户电子邮件,这样您就可以使用服务帐户代表他们访问用户数据。

由于您使用的是 C#,因此我创建了一个小型库,可为任何类型的 google api 服务以及 JSON 或 P12 凭据创建服务帐户凭据。

https://github.com/drodriguesaar/GoogleApiServiceFactory

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    相关资源
    最近更新 更多