谷歌服务帐户

问题描述:

我试图连接我的服务器用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); 
     } 
    } 

但无论我只接收“入门”文件,该文件不再存在。我有很多不能访问的不同文件。 任何想法在这里可能是错的?

服务帐号是它自己的用户,所以它将拥有自己的云端帐号空间。如果您想从您的个人帐户访问文件,您必须a)与您的服务帐户的电子邮件地址共享这些文件,或者b)使用OAuth流程,并使用您自己的用户而不是机器人服务帐户进行身份验证。

+0

但它也会以某种方式绑定到我开设服务帐户的个人帐户,不是吗? –

+0

他们如何分享我的个人帐户和服务帐户之间的驱动器空间 –

+0

不,它不会绑定到您的个人帐户。如果您想共享云端硬盘空间,我建议在您的个人云端硬盘空间中创建一个文件夹,并将其与服务帐户“共享”,以便它具有完整的读取和写入权限。 – Patrick