我有谷歌驱动器sdk快速启动Android启动并运行。
我要做的是扩展应用程序,以便能够在驱动器上传一个新的应用程序数据'文件夹,并能够再次下载此文件(在android devies之间同步配置文件)
上传文件可以正常工作。但是当我尝试下载相同的文件时,我可以获得其元数据,如fileID,fileTitle,fileDownloadURL等,但无法下载内容。我在尝试时收到401 Unauthorized错误。
我是美国的AUTH SCOPE" https://www.googleapis.com/auth/drive.appdata"访问appdata。
任何想法为什么会这样?
答案 0 :(得分:3)
只使用drive.appdata
范围时,我可以重现这一点。如果我添加另一个驱动器范围,例如drive.readonly
范围,则可以正常工作。
我同意这是一个错误(或者至少是令人惊讶的行为),所以我会提出一个,但请立即使用上面的解决方法。
答案 1 :(得分:0)
尝试以下代码来检索内容
public void retrieveContents(DriveFile file) {
// [START drive_android_open_file]
Task<DriveContents> openFileTask =
getDriveResourceClient().openFile(file, DriveFile.MODE_READ_ONLY);
// [END drive_android_open_file]
// [START drive_android_read_contents]
openFileTask.continueWithTask(new Continuation<DriveContents, Task<Void>>() {
@Override
public Task<Void> then(@NonNull Task<DriveContents> task) throws Exception {
DriveContents contents = task.getResult();
// Process contents...
// [START_EXCLUDE]
// [START drive_android_read_as_string]
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(contents.getInputStream()))) {
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line).append("\n");
}
Log.e("result ", builder.toString());
}
// [END drive_android_read_as_string]
// [END_EXCLUDE]
// [START drive_android_discard_contents]
Task<Void> discardTask = MainActivity.this.getDriveResourceClient().discardContents(contents);
// [END drive_android_discard_contents]
return discardTask;
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
// [END drive_android_read_contents]
}