Я использую новый API Google Диска для Android. Это демонстрационный код, который я скопировал из Репозиторий Google android-samples.
GoogleSignInAccount signInAccount = GoogleSignIn.getLastSignedInAccount(this);
if (signInAccount != null && signInAccount.getGrantedScopes().containsAll(requiredScopes)) {
initializeDriveClient(signInAccount);
}
else
{ ... }
Проблема, с которой я столкнулся, заключается в том, что даже если я удалю приложение с Диска, getLastSignedInAccount() по-прежнему возвращает учетную запись, и операции (например, добавление файла) в учетных записях по-прежнему выполняются успешно. Я полагаю, что возврат объекта GoogleSignInAccount - это нормально, но он не должен допускать операций с ним. Я дважды проверил на Диске, файлы не добавляются, когда API возвращает успех (поскольку я отключил приложение). Что здесь не так?
И да, это сработало, когда я вручную синхронизировал учетную запись на моем устройстве. В этом случае, хотя getLastSignedInAccount() вернул объект, операции не удались.
PS: Я прошу прицелы SCOPE_FILE и SCOPE_APPFOLDER.
Пожалуйста, поясните, что вы имеете в виду под «даже если я удалю приложение с Диска». Я предполагаю, что вы имеете в виду, что отменяете доступ к приложению в пользовательском интерфейсе Google Диска? Также уточните, сохраняется ли такое поведение, если вы закрываете текущее действие и открываете его снова, и сохраняется ли оно после перезапуска приложения. Если у вас есть отдельные шаги репо, основанные на одном из образцов Диска, это также будет полезно.
Это похоже на желаемое поведение.
GoogleSignIn.getLastSignedInAccount(this) узнает об этом только после синхронизации, но не до этого. Как видите, этот метод неблокирующий.
В качестве улучшения вызовы API для выполнения операций должны возвращать что-то вроде 403 UNAUTHORIZED.
не могли бы вы показать код?