2014-03-04 275 views
0

我想知道,是否有任何解決方案可用於上傳文件到用戶的谷歌驅動器。就像我有一個應用程序,用戶可以在其中上傳文檔。我需要爲用戶添加一個選項來將此文檔上傳到他們的谷歌驅動器。因此,每個擁有gmail帳戶的用戶都可以將文檔上傳到他們的g驅動器。我已經嘗試了一些Google的解決方案,但是它允許將文檔上傳到管理此g驅動器應用程序的單個用戶。你可以看到下面的代碼。請讓我知道是否有任何面向用戶的解決方案。上傳到谷歌驅動器在ASP.NET

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
       new ClientSecrets 
       { 
        ClientId = "clientid", 
        ClientSecret = "key", 
       }, 
       new[] { DriveService.Scope.Drive }, 
       "user",CancellationToken.None).Result; 

     // Create the service. 
     var service = new DriveService(new BaseClientService.Initializer() 
     { 
      HttpClientInitializer = credential, 
      ApplicationName = "Drive API Sample", 
     }); 

     File body = new File(); 
     body.Title = "My document"; 
     body.Description = "A test document"; 
     body.MimeType = "text/plain"; 

     byte[] byteArray = System.IO.File.ReadAllBytes(Server.MapPath("document.txt")); 
     System.IO.MemoryStream stream = new System.IO.MemoryStream(byteArray); 

     FilesResource.InsertMediaUpload request = service.Files.Insert(body, stream, "text/plain"); 
     request.Upload(); 

     File file = request.ResponseBody; 

回答

1

您必須使用OAuth2身份驗證集成您的代碼,才能從客戶端授權您的應用程序,並將授權令牌發送到服務器。 爲MVC4和谷歌雲端硬盤API客戶端庫1.4+的更新示例可以在Oauth 2.0 Documentation for .Net Client Library

+0

你是否確定它會幫助我的應用程序提供事件時用戶的gmail用戶身份驗證? –

+0

從提供的代碼中可以看出,似乎缺少的東西是強制用戶連接到您的應用程序以在谷歌服務器上進行身份驗證,並將授權令牌發送回您的服務器以代表他/她保存谷歌驅動器上的文件;而且該代碼應該完全做到這一點 – smokybob

1

中找到「我已經嘗試了一些解決方案,形成谷歌,但允許上傳文件到誰裝箱,這個G盤應用單用戶「

你確定嗎?大多數已發佈的Google示例應用都使用用戶OAuth訪問授權用戶的驅動器。只有在查看與服務帳戶相關的頁面時,才能將上傳到應用程序帳戶。

1

我也面臨同樣的問題。我在第一次上傳後通過設置_state=null解決了這個問題。是的,只要我們點擊共享驅動器,它就會一次又一次地詢問我們關於許可的信息。但需要維護約束(相關用戶應該已將其文件上傳到Google Drive)。