我正在使用a service account credential连接到服务帐户。
我正在尝试扩展它以用于同一公司内的多个用户。所有用户都将拥有该公司管理的Google帐户,并且我将为整个公司提供gsuite服务帐户。如何使用gsuite服务帐户根据电子邮件地址将文件上传到用户个人Google云端硬盘?
答案 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凭据创建服务帐户凭据。