谷歌服务帐户
问题描述:
我试图连接我的服务器用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流程,并使用您自己的用户而不是机器人服务帐户进行身份验证。
但它也会以某种方式绑定到我开设服务帐户的个人帐户,不是吗? –
他们如何分享我的个人帐户和服务帐户之间的驱动器空间 –
不,它不会绑定到您的个人帐户。如果您想共享云端硬盘空间,我建议在您的个人云端硬盘空间中创建一个文件夹,并将其与服务帐户“共享”,以便它具有完整的读取和写入权限。 – Patrick