2012-09-27 33 views
1

我正在尋找一種方法來使用管理員用戶冒充谷歌應用域名的用戶。我可以很容易地使用谷歌數據文檔列表API,但我無法找到一種方法來使用新的Drive API。冒充域名管理員的一個域名的驅動器用戶

準確地說,我想要做的是使用Oauth2(我已經這樣做)驗證我的管理員用戶,檢索我的域的用戶列表,然後模擬我的用戶,或者至少能夠訪問文件以及來自這些用戶的雲端硬盤的文檔。

在谷歌應用程序的管理面板中,有Oauth消費者密鑰和Oauth消費者機密,但這些用於Oauth1 2LO,而不是Oauth2。

是否有正確的方法/解決方法/黑客來實現我想要的?

最好的問候,

傑羅姆

回答

2

我只在看谷歌的API-紅寶石客戶端作爲一個例子,但你應該能夠與被允許訪問服務帳戶要做到這一點通過管理面板 - >高級工具 - >管理第三方oauath客戶端。一旦允許,你可以效仿的服務帳戶在這裏http://code.google.com/p/google-api-ruby-client/source/browse/service_account/analytics.rb?repo=samples而是與

client.authorization = asserter.authorize() 

授權可以使用

client.authorization = asserter.authorize("[email protected]") 

我沒有做很多與此還,但這個認證之後方法我已經能夠列出我的域上的用戶擁有的所有文檔。

2

感謝詹姆斯伍德沃德,我已經能夠模仿用戶。我發佈了一個提供Java特定細節的答案。

  1. 在API控制檯中創建一個服務帳戶。創建了3個重要的資源:
    1. 客戶端ID:用於授權對谷歌Apps域
    2. 電子郵件地址的應用:用於授權的應用程序的請求
    3. 的.p12密鑰文件:用於授權請求的應用程序
  2. 在Google Apps管理面板上授權應用程序,爲其提供服務帳戶客戶端ID以及應用程序所需的所有範圍。
  3. 創建GoogleCredential這樣:

    GoogleCredential serviceCred = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) 
          .setJsonFactory(JSON_FACTORY) 
          .setServiceAccountId(SERVICE_ID) 
          .setServiceAccountScopes(Arrays.asList(SCOPES)) 
          .setServiceAccountUser("[email protected]") 
          .setServiceAccountPrivateKeyFromP12File("key.p12") 
          .build(); 
    

這些憑據現在可以用來通過對授權的範圍內應用提出的要求進行身份驗證。

+0

對我來說,僅使用「Drive」範圍是必要的,因爲使用「DriveScopes.all()」會給您帶來未經授權的錯誤。此外,我更新了Java客戶端庫到 https://developers.google.com/api-client-library/java/google-api-java-client/download (google-api-client -assembly-1.21.0-1.21.0.zip在我的時間) –