好的我有两个设备都有相同的Gmail帐户,并且都有相同的应用程序,但使用不同的密钥签名。 SHA1密钥在Google控制台中配置。
我正在从一台设备上传一些文本文件,并希望将这些文件导入另一台设备。现在我可以上传文件,也可以在同一设备上获取文件,但无法从其他设备上传文件。结果为空,但log cat中没有错误。
如果我从第二台设备上传文件,那么我只能从第二台设备导入这些文件。所以问题是导入文件只能从上传文件的设备上运行。
无论我上传哪种设备,我都想获取文件。
注意 - 在Google云端硬盘应用中,无论从哪个设备上传文件,它都会显示所有文件。
这是代码
private List<File> retrieveAllFiles(Drive service) throws IOException {
List<File> result = new ArrayList<File>();
Files.List request = service.files().list();
do {
try {
FileList files = request.execute();
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
} catch (final UserRecoverableAuthIOException e) {
System.out.println("An error occurred: " + e);
request.setPageToken(null);
runOnUiThread(new Runnable() {
@Override
public void run() {
startActivityForResult(e.getIntent(),
REQUEST_AUTHORIZATION);
}
});
break;
}
} while (request.getPageToken() != null
&& request.getPageToken().length() > 0);
Log.v("result", result.toString());
return result;
}
这是授权码
SharedPreferences preferences = getSharedPreferences("pref",
MODE_PRIVATE);
String accountName = preferences.getString("accountName", "");
credential = GoogleAccountCredential.usingOAuth2(this,
Arrays.asList(DriveScopes.DRIVE_FILE));
if (accountName.equals("")) {
startActivityForResult(credential.newChooseAccountIntent(),
REQUEST_ACCOUNT_PICKER);
} else {
credential.setSelectedAccountName(accountName);
service = getDriveService(credential);
}
答案 0 :(得分:1)
它不起作用,因为您的两个设备被Drive视为两个不同的应用程序。因为您正在使用Drive.File范围,所以每个应用程序只能看到它自己创建的文件。您需要为两个应用提供相同的ID,或使用云端硬盘范围,以便每个应用都能看到所有文件。