[英]Is it possible to access the Google Spreadsheets API via an Google API Service account? How to do so in PHP?
[英]How to access Google Spreadsheets with a service account credentials?
我在PHP中創建了一個服務器端應用程序,它應該與Google Spreadsheets一起使用。
我可以使用OAuth 2.0身份驗證成功進行身份驗證,但在從Google請求電子表格列表時,我只會獲得電子表格所有者與服務帳戶共享的電子表格。
有沒有辦法讓服務帳戶可以檢索我的主帳戶擁有的所有電子表格而不是服務帳戶,包括那些未明確與服務帳戶共享的電子表格?
此外,我仍然希望保持電子表格的私密性,以便未經我的許可,任何人都無法訪問它們,但我需要服務帳戶才能完全訪問現有和新的電子表格。
任何建議表示贊賞。
以下是使用服務帳戶讀取Google電子表格工作表內容的示例腳本。 有關設置它的說明,請查看README:
你必須改變方法:
在雲端硬盤中創建服務帳戶。 您只能使用API管理和使用此帳戶(通常不使用Web界面)
使用Drive API,您可以列出,創建,更新,刪除和更改文件的權限。 創建新文件時,您可以將所有文件(始終使用API)共享給所需的用戶,將新文件公開或更改所有權。
請查看: https : //developers.google.com/drive/v2/reference/permissions
我假設您使用的是Google Apps而非個人GMail帳戶。 您可以使用自己的服務帳戶來模擬主帳戶。
請注意,我在這里談論的是Google所說的服務帳戶:私鑰(p12格式)和標識符。 這不是用於技術目的的Google Apps帳戶。 更多信息在這里 。
這是通過:
Spreadsheet API和Drive API的步驟完全相同。
要首先授權您的服務帳戶模擬域用戶,您可以按照此文檔操作 。 以下是基本步驟。 您必須是域超級管理員才能執行此任務。
完成此操作后,您需要更新代碼,以便模擬您的主帳戶:
$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 = 'yourmainaccount@domain.com';
然后,您可以使用$auth
變量生成訪問電子表格API所需的OAuth令牌。 我不確定您使用哪個客戶端,因此注入訪問令牌的方式取決於您使用的客戶端。
另請注意,此令牌將在1小時后過期,然后API將開始返回Session Expired
錯誤。 如果您的客戶端不自動處理此問題,您將需要捕獲錯誤並重新生成令牌。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.