Bruk én proxy-transport for Firebase Admin Java og tokenfornyelse
Send transportfabrikken til GoogleCredentials og transporten til FirebaseOptions slik at begge HTTP-veiene får proxyen.
Konfigurer begge transportinndataene når Firebase HTTP-kall og fornyelse av legitimasjon skal bruke samme proxy. Et offentlig HTTP-endepunkt valgt fra HTTP-proxylisten trenger det samme paret av overleveringer:
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);De to viktige overleveringene er fromStream(serviceAccountStream, () -> transport) og setHttpTransport(transport). Den første leverer HTTP-transporten for å hente tilgangstokener; den andre leverer HTTP-transporten til Firebase-appen. Setter man bare én, kan den andre bli stående på standardruten sin.
serviceAccountStream er den klarerte legitimasjonsstrømmen til tjenestekontoen til appen. Behold appen for arbeidsbelastningen og frigjør den gjennom den vanlige Firebase-livssyklusen. Proxyinnstillingen lar vertsnavnet til destinasjonen stå urørt for TLS-verifisering; den krever verken utskifting av SDK-klasser eller en SSL-fabrikk som stoler på alt.
Omfanget her er de viste HTTP-grensesnittene. En arbeidsbelastning som bruker WebSocket fra Realtime Database eller en annen tjenestetransport, må få støtten for ruting i den transporten kontrollert separat.