1

我試圖連接我的服務器用C#編寫我的谷歌驅動器,所以我使用谷歌服務帳戶,我從谷歌API控制檯配置的一切,有下面的代碼谷歌服務帳戶

static void Main(string[] args) 
    { 
     string[] Scopes = { DriveService.Scope.Drive }; 
     var certificate = new X509Certificate2("client_secret.p12", "notasecret", X509KeyStorageFlags.Exportable); 
     try 
     { 
      ServiceAccountCredential credential = new ServiceAccountCredential(
       new ServiceAccountCredential.Initializer("[email protected]") 
       { 
        Scopes = Scopes 
       }.FromCertificate(certificate)); 
      DriveService service = new DriveService(new BaseClientService.Initializer() 
      { 
       HttpClientInitializer = credential, 
       ApplicationName = "Salmon Player Update" 
      }); 
      FilesResource.ListRequest listRequest = service.Files.List(); 
      listRequest.PageSize = 10; 
      listRequest.Fields = "nextPageToken, files(id, name)"; 

      // List files. 
      IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute() 
       .Files; 
      Console.WriteLine("Files:"); 
      if (files != null && files.Count > 0) 
      { 
       foreach (var file in files) 
       { 
        Console.WriteLine("{0} ({1})", file.Name, file.Id); 
       } 
      } 
      else 
      { 
       Console.WriteLine("No files found."); 
      } 
      Console.Read(); 
     } catch(Exception ex) 
     { 
      Console.WriteLine(ex.InnerException); 
     } 
    } 

但無論我只接收「入門」文件,該文件不再存在。我有很多不能訪問的不同文件。 任何想法在這裏可能是錯的?

回答

3

服務帳號是它自己的用戶,所以它將擁有自己的雲端帳號空間。如果您想從您的個人帳戶訪問文件,您必須a)與您的服務帳戶的電子郵件地址共享這些文件,或者b)使用OAuth流程,並使用您自己的用戶而不是機器人服務帳戶進行身份驗證。

+0

但它也會以某種方式綁定到我開設服務帳戶的個人帳戶,不是嗎? –

+0

他們如何分享我的個人帳戶和服務帳戶之間的驅動器空間 –

+0

不,它不會綁定到您的個人帳戶。如果您想共享雲端硬盤空間,我建議在您的個人雲端硬盤空間中創建一個文件夾,並將其與服務帳戶「共享」,以便它具有完整的讀取和寫入權限。 – Patrick