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 格式的电子表格