Google云端硬盘无法访问其他设备的数据

时间:2013-10-04 21:07:34

标签: java android google-drive-api

好的我有两个设备都有相同的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);

    }

1 个答案:

答案 0 :(得分:1)

它不起作用,因为您的两个设备被Drive视为两个不同的应用程序。因为您正在使用Drive.File范围,所以每个应用程序只能看到它自己创建的文件。您需要为两个应用提供相同的ID,或使用云端硬盘范围,以便每个应用都能看到所有文件。