编写一个应用程序,该应用程序将抓取用户上传的打包zip文件的上传目录,并在Google for Work共享的Google Drive文件夹中重新创建压缩目录结构。
问题:共享文件夹对在工作域中创建的服务号不可访问或不可见。代码在C#中。我希望我只是错过了一些愚蠢的东西。
详细信息:以域管理员帐户登录。进入谷歌api控制台,启用api,创建一个服务帐户,授权访问该服务帐户的电子邮件。通过API和服务帐户,在文件对象列表中找不到共享文件夹,我也不能通过ID上传到它。
使用共享文件夹的url文件夹ID调用以下代码段。共享到服务帐户的文件夹不会显示在返回的内容列表中。
// get starting point
string masterParent = "xxxxx"; // pulled from URL after sharing folder
File masterParentFolder = GetGAPIFileById( service, masterParent, false );
示例代码片段:
static File GetGAPIFileById( gapi.DriveService service, string id, bool folderOnly ) {
if( null == id ) id = "-1";
File rtn = null;
var lreq = service.Files.List();
lreq.MaxResults = 10000;
if( folderOnly ) {
lreq.Q = "mimeType='application/vnd.google-apps.folder' and trashed=false";
} else {
lreq.Q = "trashed=false";
}
var lres = lreq.Execute();
foreach( File f in lres.Items ) {
Console.WriteLine( "Item: " + f.Title + " // " + f.Id );
if( f.Id.Trim().ToLower() == id.Trim().ToLower() ) {
rtn = f;
break;
}
}
return rtn;
}
事实证明,这个问题似乎是由更改“域外共享”设置,以及在共享文件夹和创建服务帐户之前没有等待完全传播引起的,或者是由于更改了该设置而加剧的。在删除所有内容并重新执行完全相同的步骤后,大约在初次尝试5天后,一切正常。当谷歌说“这可能需要24小时”并且它似乎在几分钟内就可以正常工作时,那就继续吧,别管这些东西,一两天后再回来。
:耸耸肩:谢谢大家。
我正在尝试通过服务帐户(客户端电子邮件和p12证书)连接到google doubeclick api,使用python客户端库,如以下示例所示: http://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py 它给我一个空access_token: 这有什么意义?我有没
我正在使用谷歌服务帐户将MySQL备份从我们的网络服务器推送到谷歌云端硬盘,使用谷歌API PHP客户端脚本设置为cron作业。 我现在想在多个网络服务器上运行相同的脚本,我不知道如何正确配置服务号,应该吗? > 是否在所有服务器上使用相同的服务帐户和服务帐户密钥/凭据? 或者使用相同的服务帐户,但为每个服务器添加服务帐户密钥/凭据? 还是为每台服务器设置单独的服务帐户?
我想用gmail API阅读我的gmail收件箱。我需要使用服务帐户,因为我的应用程序没有用户交互。我在请求时收到以下错误: 这是我的代码: 我做错了什么?有人能帮我吗? 当做
我试图使用服务帐户同步日历从Dynamics CRM软件到谷歌。在此期间,我面临着缺乏关于google API for.NET的文档,尤其是关于授权的文档。由于使用了过时的库和类,大多数Google示例甚至无法编译。 所以我发现了一些关于实习和接收错误的例子。谁能看看我的样品,告诉我哪里做错了? 准备步骤: 我在我的私人Google帐户中创建了一个项目。 在project developer控制台
我对Google Drive API、服务帐户和身份验证有一些问题。我读了很多书,但我不知道如何解决这个问题。 上下文:我的驱动器帐户上有一些文件(约35GB)和一个简单的web应用程序,用户可以登录,从我的驱动器中查看一些选定的文件夹/文件,并在需要时下载它们。唯一可以直接访问我的驱动器帐户的人是(或应该是)我的服务器,用户通过web app/server完成他们的工作。 经过一番搜索,我发现服