我想使用Google云端硬盘作为我正在制作的网站的准CMS,以便内容所有者可以使用Google云端硬盘编辑其内容。我希望使用可访问Google云端硬盘的特定用户帐户(因为撰写此帖子,服务帐户无法直接访问Google云端硬盘),并且能够与内容所有者共享文档。如何在不使用Google应用的情况下授权Google云端硬盘服务帐户访问Google帐户?
通过API和教程看完后,我发现在代表团的答案:https://developers.google.com/drive/delegation
我在这个过程中的主要问题是,网站不是由谷歌Apps的管理,因此在“委托域列出的步骤您的服务帐户的全权限“让我感到困惑 - 似乎应该可以在不使用Google Apps的情况下处理此授权,但在搜索完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令牌,消息:'{“error”:“access_denied”}
任何人提供任何帮助?我是否误解了oAuth在授权方面的工作原理?
Steve,谢谢你的回应。我已成功使用服务帐户上传和阅读文档,没有任何问题。但是,无法通过需要的Google文档网页界面访问上传的文档。此外,用户特定的oAuth不起作用的原因是因为我只想将Google文档服务帐户用作包含用于填充网站内容的文档的存储分区 - 因此,如果Google用户访问该网站,他们不需要为他们的账户或任何东西做任何事。 –
更正服务帐户无权访问Web UI。如果这是一个要求,你有几个选择。首先是将文档与需要能够访问它们的用户分享。只需要知道他们的电子邮件地址。或者,您可以转到其他方向,在其他帐户中创作文档,然后与服务帐户共享。最后,如果只有一个需要访问的帐户,请授权使用正常的oauth进行脱机访问,并让该应用代表该用户行事。 –
谢谢史蒂夫 - 当我回到这个项目时,我会更多地关注这个 –