Предупреждение аутентификации учетной записи службы после включения 'setTimestampsInSnapshotsEnabled' - PullRequest
0 голосов
/ 11 декабря 2018

Выпуск

После обновления объектов Дата моего размещенного приложения AppEngine до Отметка времени объектов в соответствии с предупреждением Firebase Отметка времени и включение setTimestampsInSnapshotsEnabled aотображается новое предупреждение об использовании учетной записи авторизации службы.

Однако в настоящее время я использую учетную запись аутентификации службы при инициализации Firebase в соответствии с документацией в разделе Инициализация облачного хранилища файлов подраздел инициализировать на вашем собственном сервере .Приложение работает, как и ожидалось, несмотря на новое предупреждение.

Original 'setTimestampsInSnapshotsEnabled' Warning

Поведение для объектов java.util.Date, хранящихся в Firestore, имеет видсобирается изменить, и ваше приложение может сломаться.Чтобы скрыть это предупреждение и убедиться, что ваше приложение не сломалось, вам необходимо добавить следующий код в свое приложение перед вызовом любых других методов Cloud Firestore:

FirestoreOptions options = FirestoreOptions.newBuilder().setTimestampsInSnapshotsEnabled(true).build();
Firestore firestore = options.getService();

С этим изменением метки времени, сохраненные в Cloud Firestore, будутчитать как объекты com.google.cloud.Timestamp, а не как системные объекты java.util.Date.Поэтому вам также необходимо обновить код, ожидающий java.util.Date, чтобы вместо этого ожидать метку времени.Например:

// Old:
java.util.Date date = (java.util.Date) 
snapshot.get("created_at");
// New:
Timestamp timestamp = (Timestamp) 
snapshot.get("created_at");
java.util.Date date = timestamp.toDate();

Пожалуйста, проверьте все существующие способы использования java.util.Date при включении нового поведения.В будущем выпуске поведение будет изменено на новое, поэтому, если вы не выполните эти шаги, ВАШЕ ПРИЛОЖЕНИЕ МОЖЕТ ПЕРЕРЫВ.

Предупреждение об аутентификации новой учетной записи службы

09 декабря 2018 12:54:39 ​​com.google.auth.oauth2.DefaultCredentialsProvider warnAboutProblematicCredentials ПРЕДУПРЕЖДЕНИЕ. Приложение аутентифицировано с использованием учетных данных конечного пользователя из Google Cloud SDK.Мы рекомендуем, чтобы большинство серверных приложений использовали учетные записи служб.Если ваше приложение продолжает использовать учетные данные конечного пользователя из Cloud SDK, вы можете получить сообщение об ошибке «Превышена квота» или «API не включен».Для получения дополнительной информации об учетных записях служб см. https://cloud.google.com/docs/authentication/.

Настройка

Инициализация Firebase

FirebaseApp.initializeApp(FirebaseOptions.Builder()
    .setCredentials(
        fromStream(Gson().toJson(FirebaseCredentialsHelper.get()).byteInputStream()))
    .setFirestoreOptions(FirestoreOptions.newBuilder()
    .setTimestampsInSnapshotsEnabled(true).build())
    .build())

Объект учетных данных службы

FirebaseCredentialsHelper возвращает учетные данные учетной записи службы в зависимости от того, встроено ли приложение в режим Staging или Production .

return FirebaseCredentials(
                "service_account",
                "[project-id]",
                "[private-key-id]",
                "[private-key]",
                "[client-email]",
                "[client-id]",
                "https://accounts.google.com/o/oauth2/auth",
                "https://accounts.google.com/o/oauth2/token",
                "https://www.googleapis.com/oauth2/v1/certs",
                "[client-x509-cert-url]"
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...