繁体   English   中英

如何在不使用Google Apps的情况下授权Google Drive服务帐户访问Google帐户?

[英]How do I authorize a google drive service account access to a google account without using google apps?

我想使用Google云端硬盘作为我正在制作的网站的准CMS,以便内容所有者可以使用Google云端硬盘编辑其内容。 我想使用一个有权访问Google云端硬盘的特定用户帐户(在撰写本文时,服务帐户无法直接访问Google云端硬盘),并且能够与内容所有者共享文档。

阅读完API和教程后,我找到了授权的答案: https : //developers.google.com/drive/delegation

我的主要问题是该网站不受Google Apps管理,因此“将域范围的权限委派给您的服务帐户”中概述的步骤使我感到困惑-似乎无需使用Google即可处理此委派应用程式,但在Google云端硬碟中搜寻特定使用者帐户的设定后,我似乎找不到授权模拟的功能。

我正在使用的代码片段:

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是特定的用户帐户,当我运行此代码时,异常指出:

刷新OAuth2令牌时出错,消息:'{“错误”:“ access_denied”}

有人提供协助吗? 我是否误解了oAuth如何以委派方式工作的基本概念?

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

  • 授权应用程序/进程使用其自己的身份认证和调用服务。 考虑一下诸如数据预测,云存储等服务,其中数据归应用所有。
  • 在google应用程序域中模拟用户,在该域中,域管理员可以预先授权应用程序代表其域中的用户执行操作。

模拟功能适用于Google Apps域,因为管理员可以通过控制面板为其用户授权带外应用程序。 当然,他们只能授权该应用访问其所管理帐户的数据。 对于不属于组织的个人用户,应用程序需要使用常规的OAuth流向每个用户请求授权。

我已经有一段时间没有对其进行测试了,但是最后我检查了是否可以将Drive与服务帐户一起使用。 我遇到的唯一限制是不可能购买额外的配额,并且该应用程序仅限于最初的5GB免费存储空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM