กำหนดค่าอินพุต transport ทั้งสองเมื่อการเรียก HTTP ของ Firebase และการรีเฟรชข้อมูลรับรองต้องใช้ proxy เดียวกัน ปลายทาง HTTP สาธารณะที่เลือกจากรายการ proxy 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) จุดแรกจัดหา transport HTTP สำหรับการขอโทเคนเข้าถึง จุดที่สองจัดหา transport HTTP ของแอป Firebase การตั้งค่าเพียงจุดเดียวอาจทำให้อีกจุดยังใช้เส้นทางเริ่มต้น

serviceAccountStream คือสตรีมข้อมูลรับรองบัญชีบริการที่แอปเชื่อถือ เก็บแอปไว้ใช้งานตามภาระงานและปล่อยผ่านวงจรชีวิตปกติของ Firebase การตั้งค่า proxy ยังคงชื่อโฮสต์ปลายทางไว้สำหรับการตรวจสอบ TLS โดยไม่ต้องแทนที่คลาส SDK และไม่ต้องใช้ SSL factory ที่เชื่อถือทุกอย่าง

ขอบเขตในที่นี้คืออินเทอร์เฟซ HTTP ที่แสดงไว้ ภาระงานที่ใช้ Realtime Database WebSocket หรือ transport ของบริการอื่นต้องตรวจสอบการรองรับเส้นทางของ transport นั้นแยกต่างหาก

บทความที่เกี่ยวข้อง