当前位置: 首页 > 知识库问答 >
问题:

我如何授权谷歌驱动器服务帐户访问谷歌帐户而不使用谷歌应用程序?

柴彬
2023-03-14

我想使用谷歌驱动器作为一个网站的准CMS工作,我正在使内容所有者可以编辑他们的内容使用谷歌驱动器。我希望使用一个可以访问Google Drive的特定用户帐户(在写这篇文章时,服务帐户不能直接访问Google Drive),并且能够与内容所有者共享文档。

在阅读了API和教程之后,我在委托中找到了答案:https://developers.google.com/drive/development

我在这个过程中的主要问题是,该网站不是由谷歌应用程序管理的,因此“将域范围的权限委托给您的服务帐户”中概述的步骤让我感到困惑--似乎不使用谷歌应用程序也可以处理这个委托,但在搜索了谷歌驱动器中的特定用户帐户设置后,我似乎找不到授权模拟的能力。

我正在使用的代码片段:

static public function getService() {
  $key = file_get_contents(GOOGLEAPI_KEYFILE);
  $auth = new Google_AssertionCredentials(GOOGLEAPI_SERVICE_EMAIL, array(GOOGLEAPI_SCOPE), $key);
  $auth->setPrn(GOOGLEAPI_IMPERSONATION);
  self::$apiClient = new Google_Client();
  self::$apiClient->setUseObjects(true);
  self::$apiClient->setAssertionCredentials($auth);
  return new Google_DriveService(self::$apiClient);
}

GOOGLEAPI_IMPersonation是特定的用户帐户,当我运行此代码时,异常声明:

共有1个答案

濮阳旺
2023-03-14

服务帐户用于两种不同的情况:

  • 授权应用程序/进程使用自己的身份验证和调用服务。想想预测、云存储等服务,这些服务的数据由应用程序拥有。
  • 在google apps域中模拟用户,域管理员可以预先授权该应用程序代表其域中的用户行事。

模拟适用于谷歌应用程序域,因为管理员有一种html" target="_blank">机制,可以通过控制面板为他们的用户授权应用程序。当然,他们只能授权应用程序访问他们管理的账户的数据。对于不属于组织的个人用户,应用程序需要使用正常的OAuth流来请求每个用户的授权。

我已经有一段时间没有测试它了,但上次我检查了它可以使用一个服务帐户作为自己的驱动器。我遇到的唯一限制是不可能购买额外的配额,应用程序被限制在最初的5GB免费存储。

 类似资料:
  • 我为我的帐户name@steelkiwi.com(谷歌应用程序)创建了服务帐户,我的应用程序运行良好。然后我为我的个人帐户name@gmail.com创建了服务帐户,为我的应用程序使用这个新的凭据,现在当我试图插入文件时,我得到错误500和下一个文本: HttpError 500请求https://www.googleapis.com/upload/drive/v2/files时?quotause

  • 我正在工作上传文件在谷歌驱动器与服务帐户,我能够插入文件在谷歌驱动器,但我不能查看该文件在谷歌驱动器。 我是创建abc@gmail.com。用abc@gmail.com创建一个服务帐户。有了P12证书和服务客户端电子邮件id,我可以在驱动器中插入文件。但无法在abc@gmail.com的谷歌驱动器上看到该文件。当fatch从应用程序中的文件列表时,它将显示5个文件,但在我的abc@gmail.co

  • 我正在使用一个服务帐户访问我们的域名用户的谷歌驱动器,这工作像一个魅力!然而,我现在正在尝试使用相同的服务帐户获得用户的activity在谷歌驱动器。 我已授予服务帐户API访问https://www.googleapis.com/auth/activity和https://www.googleapis.com/auth/drive的权限 并启用API! 然而我总是得到错误403,禁止! 可能需要

  • 我正面临着以下问题:我已经创建了一个谷歌服务帐户,现在我正在尝试使用c#对谷歌API和YouTube数据API进行授权API调用。以下是我的示例代码: 代码生成成功,但当我启动程序时,我收到以下错误消息: 系统.IO.File未发现异常:“无法加载文件或程序集”弹跳卡思加密,版本=1.7.4137.9688,区域性=非特定,公钥令牌=a4292a325f69b123“或其依赖项之一。系统找不到指定

  • 我正在调查AWS/Google云基础架构系统是否可以混合,我的要求之一是从一个系统到另一个系统的安全和简单的身份验证。目前,我需要从一个Google Cloud VM实例连接到一个受限的AWS S3 bucket。 我的问题通常是:有没有办法做到这一点,什么是最好的方法。我相信每个人都希望有机会使用多个云提供商为他们的基础设施提供高安全性、易用性和维护性。 经过一些研究,我发现唯一可能的方法是通过