gpt4 book ai didi

java - 如何使 Google Drive Java SDK 读取/写入 "my Drive"而不是其他地方?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:49 24 4
gpt4 key购买 nike

我正在为 Google Drive 使用最新的 Java SDK (1.9.0 rev 155),我已经成功地上传文件、列出它们、创建目录(这非常困难)以及其他各种事情。

但是我上传的内容在Web界面中是不可见的,同样Web界面中的内容对我的代码是不可见的。代码如下:

public final class Main
{
private static final String APPLICATION_NAME = "java7-fs-gdrive";
private static final JsonFactory JSON_FACTORY
= JacksonFactory.getDefaultInstance();

private static final Path SECRETS_FILE;

static {
final String home = System.getProperty("user.home");
if (home == null)
throw new ExceptionInInitializerError("user.home not defined???");
final Path clientSecrets
= Paths.get(home, ".gdrive/clientSecrets.json");
try {
SECRETS_FILE = clientSecrets.toRealPath();
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
}

private Main()
{
throw new Error("nice try!");
}

public static void main(final String... args)
throws GeneralSecurityException, IOException
{
final NetHttpTransport transport
= GoogleNetHttpTransport.newTrustedTransport();

final GoogleCredential credential;

try (
final InputStream in = Files.newInputStream(SECRETS_FILE);
) {
credential = GoogleCredential.fromStream(in, transport,
JSON_FACTORY).createScoped(ImmutableList.of(DriveScopes.DRIVE));
}

final Drive drive = new Drive.Builder(transport, JSON_FACTORY,
credential).setApplicationName(APPLICATION_NAME).build();

final Drive.Files files = drive.files();

final Drive.Files.List list = files.list();

final FileList fileList = list.execute();

final List<File> items = fileList.getItems();

for (final File item: items) {
System.out.println(item.getTitle());
System.out.println(item.getId());
System.out.println(item.getKind());
}

}
}

好的,那么,在开发者控制台中,我使用的是“服务帐户”凭据文件。还有“Web 应用程序的客户端 ID”。在多次阅读开发者网站(以及 SO 问题/答案)之后,我仍然无法弄清楚两者之间的区别,也仍然无法弄清楚如何“在 Web UI 上”修改文件。

那么,我该怎么办呢?

最佳答案

服务帐户不是您。它是自己的实体,可以将其视为 Google Drive 上的用户。它没有 Google Drive 的 Web 版本,因为它不是真正的人,所以没有登录。它有自己的 Drive 帐户、Google Calendar 和可能的其他一些东西。如果您希望能够看到它拥有的文件,我认为有几个选择。

第一个选项上传到您自己的帐户。

转到您的 Google 云端硬盘网络用户界面。创建一个目录。获取服务帐户的电子邮件地址,并像对待任何其他用户一样授予它访问权限。然后运行服务帐户。如果它有效,它应该可以访问这个新目录,然后您可以上传到那个目录。

第二个选项。

让服务帐户授予您访问其目录结构的权限。可能使用 Permissions: insert通过获取您的电子邮件地址并授予其访问服务帐户目录的权限。

注意 我还没有用驱动器测试过这个,但我用过谷歌分析和谷歌日历。我可能只是为了好玩而尝试一下。此外,我不是 Java 程序员,所以无法帮助它正常工作。我真的不认为这是一个 Java 问题,它更像是一个服务帐户设置问题:)

关于java - 如何使 Google Drive Java SDK 读取/写入 "my Drive"而不是其他地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27541574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com