Используйте один прокси-транспорт для Firebase Admin Java и обновления токенов
Передайте фабрику транспорта в GoogleCredentials, а транспорт — в FirebaseOptions, чтобы оба HTTP-пути шли через прокси.
Настройте оба входа транспорта, когда HTTP-вызовы Firebase и обновление учётных данных должны использовать один прокси. Публичная HTTP-точка, выбранная из списка HTTP-прокси, требует той же пары передач:
var proxy = new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example.net", 8080));
var transport =
new com.google.api.client.http.javanet.NetHttpTransport.Builder()
.setProxy(proxy)
.build();
var credentials = com.google.auth.oauth2.GoogleCredentials.fromStream(
serviceAccountStream, () -> transport);
var options = com.google.firebase.FirebaseOptions.builder()
.setCredentials(credentials)
.setHttpTransport(transport)
.build();
var app = com.google.firebase.FirebaseApp.initializeApp(options);Две важные передачи — fromStream(serviceAccountStream, () -> transport) и setHttpTransport(transport). Первая даёт HTTP-транспорт для получения токенов доступа; вторая даёт HTTP-транспорт приложения Firebase. Если задать только одну, вторая может остаться на своём маршруте по умолчанию.
serviceAccountStream — это доверенный поток учётных данных сервисной учётной записи приложения. Сохраните приложение для его работы и освободите через обычный жизненный цикл Firebase. Настройка прокси оставляет имя хоста назначения нетронутым для проверки TLS; она не требует ни замены классов SDK, ни SSL-фабрики, доверяющей всему.
Область здесь — показанные HTTP-интерфейсы. Рабочей нагрузке, использующей WebSocket Realtime Database или другой транспорт сервиса, нужна отдельная проверка поддержки маршрутизации этого транспорта.