我假设你使用谷歌企业应用套件,而不是个人Gmail帐户。您可以使用您的服务帐户模仿您的主帐户。在这里我说的方式服务帐户的
注意谷歌表示它:私有密钥(在P12格式)和标识。这不是用于技术目的的Google Apps帐户。 More information here。
这是通过:
- 授权您谷歌Apps域
- 您的服务帐户修改代码,你用它来生成API凭据
的步骤是完全的相同Spreadsheet API和Drive API。
要首先授权您的服务帐户来模拟域用户,你可以按照this documentation。这是基本步骤。您必须是域超级管理员才能执行此任务。
- 转到您的谷歌Apps域的管理员控制台:https://admin.google.com
- 选择安全从控件列表。如果您没有看到安全上市,然后从灰色条更多 控制在页面的底部,然后从控件列表中选择 安全。
- 选择高级设置从 选项列表。
- 选择管理第三方OAuth客户端访问 在身份验证部分。
- 在客户名称字段中输入 服务帐户的客户端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
错误。如果您的客户端没有自动处理这个问题,您需要捕获错误并重新生成令牌。
请澄清:请问你的问题,从不同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
1.根据我的理解,电子表格不是Google Drive API的一部分。 2.我认为我可以授予服务帐户授权的服务帐户访问权限。 – Piero 2014-11-21 20:16:04