Настройте оба входа транспорта, когда 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 или другой транспорт сервиса, нужна отдельная проверка поддержки маршрутизации этого транспорта.

Похожие статьи