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

Подобни статии