列出Drive中的所有文件

时间:2015-12-13 17:15:21

标签: android google-drive-android-api

我想使用Google Drive API for Android列出用户云端硬盘的Root文件夹中的所有文件。

我尝试了什么:

  1. 使用SCOPE_FILElistChildren

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Drive.API)
            .addScope(Drive.SCOPE_FILE)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .build();
    
  2. 然后列出文件:

    Drive.DriveApi.getRootFolder(mGoogleApiClient)
        .listChildren(mGoogleApiClient)
        .setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
            @Override
            public void onResult(DriveApi.MetadataBufferResult result) {
                if (!result.getStatus().isSuccess()) {
                    Log.v("DKDK", "Request failed");
                    return;
                }
                MetadataBuffer metadataBuffer = result.getMetadataBuffer(); // empty!
            }
        }
    

    found SCOPE_FILE只列出应用创建的文件,而不是所有文件。

    1. 使用https://www.googleapis.com/auth/drive范围

      mGoogleApiClient = new GoogleApiClient.Builder(this)
              .addApi(Drive.API)
              .addScope(new Scope("https://www.googleapis.com/auth/drive"))
              .addConnectionCallbacks(this)
              .addOnConnectionFailedListener(this)
              .build();
      
    2. 异常失败:

      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:86)
      at com.google.android.gms.drive.api.e.<init>(SourceFile:230)
      at com.google.android.gms.drive.api.a.q.a(SourceFile:71)
      at com.google.android.gms.common.service.f.run(SourceFile:176)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
      at com.google.android.gms.common.util.a.c.run(SourceFile:17)
      at java.lang.Thread.run(Thread.java:856)
      

      是打算以这种方式工作,还是我错过了什么?

1 个答案:

答案 0 :(得分:10)

您无法使用Google Drive API(Android库)列出所有文件(您的应用尚未创建的文件)。您应该使用Google Drive REST API。

您尝试使用的范围是REST API。

这是来自docs页面:

  

注意:Android Drive API仅适用于   babel-loader范围。这仅仅意味着   用户使用您的应用程序打开或创建的文件可以是   与查询匹配。

https://www.googleapis.com/auth/drive.file