我在google drive中创建了一个服务帐户,用于从服务器上传google drive中的文件,并在以后下载这些文件。但是当我试图获取文件夹的文件列表并获取这些文件的WebContentLinks
时,它返回了null。我检查了它的其他一些属性,除了文件名和文件ID之外,getWebContentLink()
和getWebViewLink()
都返回null。
有人能帮我获得WebContentLink
吗?或者你能找出为什么我不能获得WebContentLink
的问题。
下面是我尝试的一部分代码:
List<String> linkList=new ArrayList<String>();
fileFlag=0;
pageToken = null;
do {
driveFiles = service.files().list()
.setQ("mimeType!='application/vnd.google-apps.folder and "+childFolder.getId()+"' in parents ")
.setSpaces("drive")
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
System.out.println("\n\nFile No. : "+driveFiles.getFiles().size());
for(com.google.api.services.drive.model.File file: driveFiles.getFiles()) {
linkList.add(file.getWebContentLink());
System.out.println(file.getName());
System.out.println("File Link : "+file.getWebContentLink());
System.out.println(file.getId());
System.out.println(file.getWebViewLink());
}
pageToken = driveFiles.getNextPageToken();
} while (pageToken != null);
下面是一个输出
File No. : 4
V2__data.sql
File Link : null
0BzCRyzakN8eJOGRTODhXTFkxUWc
null
V1__table.sql
File Link : null
0BzCRyzakN8eJT09BbG5JUFdNYmc
null
V2__data.sql
File Link : null
0BzCRyzakN8eJa0FyUGw3UFZJZ00
null
V1__table.sql
File Link : null
0BzCRyzakN8eJcDJNWHY4cFNHMW8
null
正如@pinoyyid评论的那样,在drive查询的setFields属性中添加webContentLink解决了这个问题。
List<String> linkList=new ArrayList<String>();
fileFlag=0;
pageToken = null;
do {
driveFiles = service.files().list()
.setQ("mimeType!='application/vnd.google-apps.folder' and '"+childFolder.getId()+"' in parents ")
.setSpaces("drive")
.setFields("nextPageToken, files(id, name, webContentLink)")
.setPageToken(pageToken)
.execute();
System.out.println("\n\nFile No. : "+driveFiles.getFiles().size());
for(com.google.api.services.drive.model.File file: driveFiles.getFiles()) {
linkList.add(file.getWebContentLink());
System.out.println(file.getName());
System.out.println("File Link : "+file.getWebContentLink());
System.out.println(file.getId());
System.out.println(file.getWebViewLink());
}
pageToken = driveFiles.getNextPageToken();
} while (pageToken != null);
我正在工作上传文件在谷歌驱动器与服务帐户,我能够插入文件在谷歌驱动器,但我不能查看该文件在谷歌驱动器。 我是创建abc@gmail.com。用abc@gmail.com创建一个服务帐户。有了P12证书和服务客户端电子邮件id,我可以在驱动器中插入文件。但无法在abc@gmail.com的谷歌驱动器上看到该文件。当fatch从应用程序中的文件列表时,它将显示5个文件,但在我的abc@gmail.co
我有一个G套件域,并用域范围的授权打开一个服务号。服务号在项目中也有所有者身份。我启用gmail应用编程接口并添加范围参考(https://developers.google.com/admin-sdk/directory/v1/guides/delegation“将域范围的权限委托给您的服务号”)我也启用不太安全的应用程序设置。 这是我的代码: 但是当我使用这个令牌尝试列出电子邮件时:GETht
我试图创建一个nodejs应用程序,可以准备我的GoogleDrive文件。我不想要一个每个人都可以使用的应用程序,它只是特定于我的谷歌驱动。 我在控制台中为GoogleDrive创建了一个api密钥,没有任何限制。 这是我正在做的电话:https://www.googleapis.com/drive/v3/files?pageSize=10 当使用这个键我得到这个错误: 这在谷歌硬盘上可能吗?
我正在尝试使用Google Directory API验证组成员,但每次我发出请求时都无法通过403错误。 我使用的是一个服务帐户,我为它启用了“启用G套件域范围委托”选项。我还使用套件中的客户端ID添加了“https://www.googleapis.com/auth/admin.directory.user,https://www.googleapis.com/auth/admin.direc
我想使用gsutil和服务帐户在命令行上访问Goolge播放报告。有一个云存储URI,格式为gs://bucket\u name,我可以用我的用户帐户列出和下载报告,但不能用我创建的服务帐户。错误总是相同的: 我已向服务帐户授予了所有必需的权限,因此我不明白为什么用户帐户可以使用,而服务帐户却无法使用。 所以如果你知道如何帮助我,我会非常感谢你。
我无法使用服务帐户插入google drive。相反,我可以使用相同的服务帐户从google drive下载和更新文件,而不会出现任何问题。我通过转到[我的项目]从特定用户(我们称之为用户“X”)的帐户中创建了服务帐户- 然后,我专门转到用户“X”的MyDrive上的一个文件夹,并将该文件夹与OAuth2的“创建新客户端ID”步骤生成的服务帐户电子邮件地址共享。我确保指定该文件夹的服务帐户权限为“