Configurate entrambi gli input del trasporto quando le chiamate HTTP di Firebase e il rinnovo delle credenziali devono usare lo stesso proxy. Un endpoint HTTP pubblico scelto dalla lista di proxy HTTP richiede la stessa coppia di passaggi:

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);

I due passaggi importanti sono fromStream(serviceAccountStream, () -> transport) e setHttpTransport(transport). Il primo fornisce il trasporto HTTP per ottenere i token di accesso; il secondo fornisce il trasporto HTTP dell'app Firebase. Impostarne solo uno può lasciare l'altro sul suo percorso predefinito.

serviceAccountStream è il flusso di credenziali dell'account di servizio fidato dell'applicazione. Mantenete l'app per il suo carico di lavoro e rilasciatela tramite il normale ciclo di vita di Firebase. L'impostazione del proxy lascia intatto il nome host di destinazione per la verifica TLS; non richiede né la sostituzione delle classi SDK né una factory SSL che si fida di tutto.

L'ambito qui sono le interfacce HTTP mostrate. Un carico di lavoro che usa il WebSocket di Realtime Database o un altro trasporto di servizio richiede una verifica separata del supporto di routing di quel trasporto.

Articoli correlati