我尝试将使用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);
}
}
但无论我做什么,我只能获得#34;入门&#34;那里不存在的文件。我有很多不同的文件,我无法访问。 任何想法在这里可能是错的?
答案 0 :(得分:3)
服务帐户是其自己的用户,因此它将拥有自己的云端硬盘帐户空间。如果您想访问个人帐户中的文件,则必须a)与服务帐户的电子邮件地址共享这些文件,或b)使用OAuth流程并使用您自己的用户而不是机器人服务帐户进行身份验证。