科技谷歌驅動的數據所需:C#訪問域寬,ServiceAccount演員用戶
描述:我的工作,以創建應用程序,該網站會要求谷歌認證與用戶同意的屏幕工作流程,並且一旦被授權域管理員,網站將有權訪問該域下的所有用戶,並訪問驅動器和團隊驅動器數據。
嘗試的方式進行身份驗證:
- 創建的服務帳戶的用戶,從admin.google.com爲谷歌提供的作用域必要的權限給該用戶
- 創建超級管理員用戶,服務分配其角色具有在#1中創建的服務帳戶的帳戶演員。與ServiceAccountCredential對象
ServiceAccountCredential credential = new ServiceAccountCredential( new ServiceAccountCredential.Initializer("Service_Account_Email") { Scopes = SCOPES, User = ADMIN_EMAIL, }.FromPrivateKey("PRIVATE_KEY"));
通過使用ServiceAccountCredential對象的使用
代碼,我可以列出域用戶,以及驅動器的詳細信息,如需要。唯一的問題是,我需要客戶端創建#1中提到的服務帳戶和身份驗證步驟,並且還要求提供我不想要的憑據(服務帳戶電子郵件,私鑰,管理員電子郵件)。
我試圖用管理員用戶(#2)進行身份驗證,該用戶具有帶有用戶同意屏幕的服務帳戶主角色以及下面的代碼。
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer
{
ClientSecrets = new ClientSecrets
{
ClientId = Constants.GoogleClientId,
ClientSecret = Constants.GoogleClientSecret
},
Scopes = Constants.GoogleScopes
//,DataStore = new FileDataStore("Drive.Api.Auth.Store")
});
UserCredential credential = new UserCredential(flow, email, response);
var service1 = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Drive API Service Account Sample",
});
使用上面的代碼「service1.Teamdrives.List().execute();」總是結果團隊驅動器可用與管理員用戶我使用身份驗證,但我在UserCredential對象中傳遞不同的電子郵件。
我需要幫助,在這裏,我需要能夠操縱所有用戶的硬盤數據,而不一旦被管理員用戶(服務帳戶演員)
任何幫助,將不勝感激驗證任何用戶干預。
由於
我需要實現以下服務帳戶演員角色的用戶身份驗證的工作流程。 1:用戶來到我們的網站,即googledriveconnect.com進行連接。 2:Google用戶許可屏幕將顯示給用戶,該用戶要求訪問屬於example.com域名的所有用戶的驅動器數據的權限。 3:[email protected](Service Account Actor)用戶將在用戶許可屏幕上登錄並授權googledriveconnect.com的許可。 4:一旦管理員用戶批准,googledriveconnect.com現在可以訪問屬於example.com域的所有用戶的谷歌驅動器內容。 –