使用服务用户通过电子邮件地址将文件上传到Google云端硬盘

时间:2018-04-02 17:05:26

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

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

我正在尝试扩展它以用于同一公司内的多个用户。所有用户都将拥有该公司管理的Google帐户,并且我将为整个公司提供gsuite服务帐户。如何使用gsuite服务帐户根据电子邮件地址将文件上传到用户个人Google云端硬盘?

3 个答案:

答案 0 :(得分:5)

您希望使用.timedOut,并为相应的用户设置ServiceAccountCredential属性。

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

GoogleCredential

如果您想为许多不同的用户使用相同的原始凭据,您可以保留GoogleCredential credential = Google.GetApplicationDefault() .CreateScoped(...) .CreateWithUser("foo@bar.com"); 的结果,只需调用CreateScoped(...)即可为每个操作创建新的用户特定凭据。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

在我的工作中,我们有与您相同的方案,为了能够实现此类集成,我们创建了一个为此帐户启用了广域授权的服务帐户。

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

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

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

https://github.com/drodriguesaar/GoogleApiServiceFactory