Google 服务帐号

Google Service Account

我正在尝试将用 C# 编写的服务器连接到我的 Google 驱动器,因此我使用 Google 服务帐户,我配置了 Google 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("sp-update@salmon-player-update.iam.gserviceaccount.com")
                {
                    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);
        }
    }

但无论我做什么,我得到的只是 "Getting Started" 文件,该文件已不存在了。我有很多我无法访问的不同文件。 知道这里可能有什么问题吗?

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