В настоящее время моя команда работает над системами iOS и Android. У нас есть 2 отдельных приложения, и наша идея - использовать Google Drive в качестве ретранслятора данных. То есть наше приложение Android упаковывает zip-файл, загружает его в Google Drive, а затем приложение iOS загружает его для дальнейшей обработки.
Наша команда делится учетной записью Google, поэтому данные загружены и загружены из той же учетной записи Google.
Я следовал инструкциям по входу в учетную запись Google: https://developers.google.com/identity/sign-in/android/sign-in
И я также связал мое приложение в консоли API Google. (Устанавливая учетные данные с помощью ключа SHA5 моего приложения.) Мое приложение теперь может загружать файлы и создавать папки на Google Диске с помощью Drive API. Однако, когда я хочу перечислить все папки на Google Диске, я обнаружил, что мое Android приложение может ТОЛЬКО видеть созданные им папки. Я изменил условие запроса на файлы, и он также может возвращать ТОЛЬКО загруженные файлы.
Я спросил моего коллегу, который реализует приложение iOS и использует версию Drive API iOS. Он говорит, что его iOS приложение может видеть ВСЕ папки и файлы в хранилище Google Диска. И оба наших приложения все еще находятся в стадии отладки (не в магазине приложений или в режиме выпуска).
Я что-то упустил? Или это какой-то механизм защиты конфиденциальности?
Вот мой код запроса в Java:
void queryAllFolders() {
if(isReady()) {
Task<FileList> queryAllFoldersTask = queryAllGoogleDriveFolders();
if(queryAllFoldersTask != null) {
queryAllFoldersTask.addOnCompleteListener(this::onQueryAllFoldersCompleted);
queryAllFoldersTask.addOnFailureListener(this::onQueryAllFoldersFailed);
}
}
}
private Task<FileList> queryAllGoogleDriveFolders() {
try{
return Tasks.call(mExecutor, () -> {
// Retrieve the metadata as a FileList object.
String pageToken = null;
FileList result;
do {
mLogger.debug("[queryAllGoogleDriveFolders] start query");
result = mDriveService.files().list()
.setQ("mimeType='application/vnd.google-apps.folder' and trashed=false")
.setSpaces("drive")
.setFields("nextPageToken, files(id, name)")
.setPageToken(pageToken)
.execute();
for (File file : result.getFiles()) {
mLogger.debug("[queryAllGoogleDriveFolders] Found folder: " + file.getName() + " with ID: " + file.getId());
}
pageToken = result.getNextPageToken();
} while (pageToken != null);
return result;
});
} catch (Exception e) {
mLogger.error("[queryAllGoogleDriveFolders] Error querying Google Drive folders: " + e.getLocalizedMessage());
e.printStackTrace();
if(onQueryAllFoldersFailedCallback != null) { onQueryAllFoldersFailedCallback.run(); }
return null;
}
}
«trashed = false» не влияет на результат запроса - другие папки которые не созданы моим Android приложением, пока не обнаружено, добавлено ли это условие.
Спасибо за любую помощь заранее.