Drive Rest Api正在使用一个电子邮件ID,但不适用于其他gmail ID

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drive Rest Api正在使用一个电子邮件ID,但不适用于其他gmail ID相关的知识,希望对你有一定的参考价值。

我已经实现了Google Drive Rest API,但它仅适用于一个gmail ID,不适用于其他gmail ID。

以我的荣誉4x,我正在使用我的一个gmail ID,并且能够将sqllite数据库成功上传并下载到Google驱动器。

当我在具有不同gmail ID的其他设备上安装应用程序时,我无法将sqllite DB上传到那里的Google驱动器。

下面是我的上传文件方法。对于其他设备,它将添加addOnFailureListener。

private void uploadFile() {

        mDriveServiceHelper.searchFile("cue_cards_db","application/x-sqlite-3")
                   .continueWithTask(new Continuation<GoogleDriveFileHolder, Task<Void>>(){
                       @Override
                       public Task<Void> then(@NonNull Task<GoogleDriveFileHolder> task) throws Exception {
                           return mDriveServiceHelper.deleteFolderFile(task.getResult().getId());
                       }
                   });


       if (mDriveServiceHelper != null) {
           Log.d(TAG, "Upload Creating a file.");

           mDriveServiceHelper.uploadFile(DATA_DIRECTORY_DATABASE,"application/x-sqlite-3",null)
                   .addOnSuccessListener(new OnSuccessListener<GoogleDriveFileHolder>() {
                       @Override
                       public void onSuccess(GoogleDriveFileHolder googleDriveFileHolder) {
                           Gson gson = new Gson();
                           Log.d(TAG, " >>>>>>>>> onSuccess: " + gson.toJson(googleDriveFileHolder));
                       }
                   })
                   .addOnFailureListener(new OnFailureListener() {
                       @Override
                       public void onFailure(@NonNull Exception e) {
                           Log.d(TAG, ">>>>>>>> onFailure: " + e.getMessage());
                       }
                   });
       }
   }

上方uploadfile()方法正在调用以下uploadFile方法。我已将Sop放入以下方法中,并观察到其他设备或gmail ID不在代码行下方执行。

File fileMeta = mDriveService.files().create(metadata, fileContent).execute();

public Task<GoogleDriveFileHolder> uploadFile(final java.io.File localFile, final String mimeType, @Nullable final String folderId) {
     return Tasks.call(mExecutor, new Callable<GoogleDriveFileHolder>() {
         @Override
         public GoogleDriveFileHolder call() throws Exception {
             // Retrieve the metadata as a File object.

             List<String> root;
             if (folderId == null) {
                 root = Collections.singletonList("root");
             } else {

                 root = Collections.singletonList(folderId);
             }

             File metadata = new File()
                     .setParents(root)
                     .setMimeType(mimeType)
                     .setName(localFile.getName());

             FileContent fileContent = new FileContent(mimeType, localFile);
             System.out.println(">>>>>>>>>>>> fileContent >>>>>>>>>>>>> "+fileContent);
             System.out.println(">>>>>>>>>>>> mDriveService >>>>>>>>>>>>> "+mDriveService.getApplicationName());

             File fileMeta = mDriveService.files().create(metadata, fileContent).execute();
             System.out.println(">>>>>> fileMeta ID>>>>>>> "+fileMeta.getId());
             GoogleDriveFileHolder googleDriveFileHolder = new GoogleDriveFileHolder();
             googleDriveFileHolder.setId(fileMeta.getId());
             googleDriveFileHolder.setName(fileMeta.getName());

             System.out.println(">>>>>> googleDriveFileHolder value >>>>>>> "+googleDriveFileHolder);
             return googleDriveFileHolder;
         }
     });
 }

我想在所有设备上执行上传和下载。

答案

有人有解决方案吗?我也面临着同样的问题

以上是关于Drive Rest Api正在使用一个电子邮件ID,但不适用于其他gmail ID的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Drive 上传和下载文件(使用 Rest Api v3)

通过Google Drive REST API上传或创建包含内容的新文件?

google drive simple upload rest API的示例

使用 google drive API 下载 csv 格式的电子表格

为啥我从 google drive rest api 得到服务器回复被禁止?

使用 Google Drive REST API 在 Swift 3 完成处理程序中避免向下转换