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 流程并使用您自己的用户而不是机器人服务帐户进行身份验证。
我正在尝试将用 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 流程并使用您自己的用户而不是机器人服务帐户进行身份验证。