2014-11-21 121 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

相關問題