2014-11-21 82 views
3

我已经创建了PHP这是应该与谷歌电子表格的工作在服务器端应用程序。如何使用服务帐户凭据访问Google Spreadsheets?

我可以通过OAuth 2.0身份验证成功进行身份验证,但在向Google申请电子表格列表时,我只会收到电子表格所有者与服务帐户共享的电子表格。

有没有一种方式,服务帐户可以检索我的主帐户不是服务之一,包括那些没有明确与服务帐户共享拥有的所有电子表格?

此外,我还希望保留电子表格私人所以没有人可以访问它们没有我的允许,但我需要的服务帐户拥有完全访问现有的和新的电子表格。

任何意见表示赞赏。

+0

请澄清:请问你的问题,从不同http://stackoverflow.com/questions/14187030/how-do-i-authorize- a-google-drive-service-account-access-a-google-account-wit 或http://stackoverflow.com/questions/14124946/google-drive-service-account-view-files-from-another -account – 2014-11-21 20:02:28

+0

1.根据我的理解,电子表格不是Google Drive API的一部分。 2.我认为我可以授予服务帐户授权的服务帐户访问权限。 – Piero 2014-11-21 20:16:04

回答

1

你必须改变方法:

  1. 在驱动器创建一个服务帐户。您可以仅通过API管理和使用此帐户(不像通常的Web界面)

  2. 使用Drive API,您可以列出,创建,更新,删除和更改文件的权限。当你创建一个新文件时,你可以把它分享给你想要的用户,总是使用API​​,公开新文件或更改所有权。

请看看:https://developers.google.com/drive/v2/reference/permissions

0

我假设你使用谷歌企业应用套件,而不是个人Gmail帐户。您可以使用您的服务帐户模仿您的主帐户。在这里我说的方式服务帐户的

注意谷歌表示它:私有密钥(在P12格式)和标识。这不是用于技术目的的Google Apps帐户。 More information here

这是通过:

  1. 授权您谷歌Apps域
  2. 您的服务帐户修改代码,你用它来生成API凭据

的步骤是完全的相同Spreadsheet API和Drive API。

要首先授权您的服务帐户来模拟域用户,你可以按照this documentation。这是基本步骤。您必须是域超级管理员才能执行此任务。

  1. 转到您的谷歌Apps域的管理员控制台:https://admin.google.com
  2. 选择安全从控件列表。如果您没有看到安全上市,然后从灰色条更多 控制在页面的底部,然后从控件列表中选择 安全
  3. 选择高级设置从 选项列表。
  4. 选择管理第三方OAuth客户端访问身份验证部分。
  5. 客户名称字段中输入 服务帐户的客户端ID。在一个或多个API范围字段 中输入您的应用程序应被授予 访问权限的范围列表。你的情况,这将是至少电子表格API范围:https://spreadsheets.google.com/feeds

当做到这一点,你需要让假冒主帐户更新代码:

$key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH); 
$auth = new Google_AssertionCredentials(
     'YOUR_SERVICE_ACCOUNT_EMAIL', 
     array('https://spreadsheets.google.com/feeds'), 
     $key); 
$auth->sub = '[email protected]'; 

你可以然后使用$auth变量生成您需要访问电子表格API的OAuth令牌。我不确定您使用哪个客户端,因此注入访问令牌的方式取决于您使用的客户端。

此外,请注意,此令牌将在1小时后过期,然后API将开始返回Session Expired错误。如果您的客户端没有自动处理这个问题,您需要捕获错误并重新生成令牌。

+0

不幸的是它是Gmail帐户。 – Piero 2014-12-01 15:21:03

+0

然后,您应该为您的应用程序授予您的主要帐户而不是服务帐户的权利。您只能将这些权限限制为电子表格。 – David 2014-12-02 02:01:47

+0

但我无法为主帐户设置.p12验证文件,仅限于服务一。 – Piero 2014-12-02 20:06:40

相关问题