我假設你使用谷歌企業應用套件,而不是個人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