适用于 Android 的 Google Drive API - 仅 Drive.SCOPE_FILE 访问权限,需要只读

2024-03-18

所以我是个新手,我希望列出 Google 云端硬盘中的所有文件和文件夹。

我已经下载了新的 SDK,让我的应用程序获得了所有授权等。 我使用示例通过打开工具选择一个文件夹,然后在列表视图中显示内容。

BUT - NO文件已显示。它仅显示所选文件夹中的任何子文件夹。

因此,新的 SDK 似乎仅具有 SCOPE_FILE 访问权限,我收集的数据仅允许应用程序查看其创建的文件或用户自己选择的文件。

但由于我需要能够列出给定文件夹中的所有文件和文件夹,所以这对我来说根本不起作用。

通过进一步阅读,我似乎必须使用 REST Java API(或其他东西),这将允许我获得对文件和元数据的只读访问。

问题是,我很难找到我到底需要什么 Jar 文件等,以及我应该把它们放在哪里。

请记住,我对这一切都是新手。

我正在使用 Android Studio,所以有人可以告诉我:

  • 我到底需要什么 JAR 文件

  • 我应该把它们放在哪里(在 libs 文件夹中?)

  • 我需要编辑 build.gradle 来包含它们吗?

  • 有授权的例子吗?

  • 以及列出文件和文件夹的示例,例如在根文件夹中

  • 我是否需要新的 SDK?

感谢您对此的任何帮助。


好吧,该死的 Java API 显然不支持https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive访问所有文件所需的范围。我试过这个:

    googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Drive.API)
            .addScope(new Scope("https://www.googleapis.com/auth/drive"))
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();

结果是“来自 Google API 的未知错误”并且日志中出现异常:

06-30 14:11:48.803   3023-29855/? E/ClientConnectionOperation﹕ Handling authorization failure
com.google.android.gms.drive.auth.c: Authorization failed: Unsupported scope: https://www.googleapis.com/auth/drive
        at com.google.android.gms.drive.auth.g.a(SourceFile:77)
        at com.google.android.gms.drive.api.g.<init>(SourceFile:226)
        at com.google.android.gms.drive.api.a.k.a(SourceFile:46)
        at com.google.android.gms.common.service.g.run(SourceFile:178)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)`

然后我尝试了另一个范围:https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/drive.readonly这并没有以不同的方式工作:

06-30 14:12:25.082   3023-29981/? E/ClientConnectionOperation﹕ Handling authorization failure
com.google.android.gms.drive.auth.c: Authorization failed: No valid Drive authorization scope provided.
        at com.google.android.gms.drive.auth.g.a(SourceFile:87)
        at com.google.android.gms.drive.api.g.<init>(SourceFile:226)
        at com.google.android.gms.drive.api.a.k.a(SourceFile:46)
        at com.google.android.gms.common.service.g.run(SourceFile:178)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:818)

在 Google API 7.5.0 上尝试过这一点,并在这个迟缓的 API 上浪费了两个小时。我相信 Java API 无法正确处理这个问题,我们需要使用 JSON API 来做到这一点。

编辑:我发现这个关于如何使用另一个 Java API 访问 Google Drive 的非常好的教程:https://developers.google.com/drive/web/quickstart/java https://developers.google.com/drive/web/quickstart/java不幸的是,它不适用于 Android:

   Caused by: java.security.NoSuchAlgorithmException: KeyStore JKS implementation not found
        at org.apache.harmony.security.fortress.Engine.notFound(Engine.java:190)
        at org.apache.harmony.security.fortress.Engine.getInstance(Engine.java:139)
        at java.security.KeyStore.getInstance(KeyStore.java:116)

在 com.google.api.client.util.SecurityUtils.getJavaKeyStore(SecurityUtils.java:53)

爱丽丝梦游仙境有人吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

适用于 Android 的 Google Drive API - 仅 Drive.SCOPE_FILE 访问权限,需要只读 的相关文章

随机推荐