Отключение приложения пользователя на Диске приводит к потере данных в области FILE

Я несколько раз сталкивался с этой проблемой, но никогда не мог указать на нее пальцем, объясняя ее латентностью GDAA , моим багги-кодом и т. Д. Мне наконец-то удалось найти сценарий, где я могу безопасно воспроизвести его, поэтому я хотел бы спросить людей, которые знают, является ли это особенностью, которую я не понимаю, или простой ошибкой. Если это так, пожалуйста, укажите мне место, где я смогу его обмануть.

Я расскажу об этом на фоне API REST для простоты.

1 / У нас будет аутентифицированное приложение API Drive Drive , работающее под областью DRIVE_FILE

com.google.api.services.drive.Drive svc = new Drive.Builder( AndroidHttp.newCompatibleTransport(), new GsonFactory(), GoogleAccountCredential .usingOAuth2( context, Collections.singletonList(DriveScopes.DRIVE_FILE)) ).build(); 

2 / создайте файл (файлы / папки) в Google Диске, используя

 svc.files().insert([METADATA], [CONTENT]).execute(); 

3 / поиск объектов, которые вы создали, используя

 svc.files().list().setQ([QUERY]).setFields([FIELDS]).execute(); 

Когда приложение запускается, пользователь проходит обычную процедуру Account-Pick / Drive-Authorize, и все работает так, как ожидалось. Файлы создаются, видимы, могут быть найдены … до тех пор, пока пользователь не аннулирует авторизацию с помощью

Настройки> Управление приложениями> Отключение с диска

в drive.google.com .

После этого, если приложение Android будет перезапущено (и повторно разрешено), ни один из объектов, созданных до отзыва, не будет виден.

Возможно, по дизайну я не знаю. Если это так, я не могу найти способ, каким образом приложение Android может добраться до всего, что было создано ранее. Я мог бы создать другое приложение «обслуживание» с областью DRIVE, чтобы исправить это, но …

Теперь, в случае GDAA , это становится еще хуже. Не только GDAA не имеет области DRIVE для ее исправления, но если выполняется одна и та же последовательность шагов, и приложение создает файл / папку сразу после отзыва, GDAA не жалуется, но файл / папка вообще не создается. Через некоторое время (минуты) всплывающее повторное авторизация, но все же файлы, созданные тем временем, нигде не найдены, и все, что предшествует аннулированию, теряется и для (создателя) приложения (оно, безусловно, видно в веб-приложение, которое, очевидно, имеет DRIVE, как область).

Благодарим вас за терпение.

    Первый вопрос:

    1. Пользователь отменяет авторизацию через: Настройки> Управление приложениями> Отключить с диска
    2. Затем перезапускает это приложение
    3. Файлы, которым это приложение разрешено видеть с областью DRIVE_FILE, больше не разрешены.

    Это ожидаемое поведение API REST и Android.

    Мы не думаем, что пользователи интуитивно ожидают, что все ранее разрешенные файлы будут повторно разрешены. Пользователь может не помнить файлы, которые ранее были авторизованы, и информирование пользователей о том, что эти файлы будут разрешены снова, вероятно, вызовет путаницу.

    Вторая проблема – поведение GDAA для создания папок в этой ситуации. В настоящее время мы не поддерживаем CompletionEvents для создания папок, но это то, что мы рассмотрим.

    Давайте будем гением компьютера.