ใช้ proxy transport เดียวสำหรับ Firebase Admin Java และการรีเฟรชโทเคน
ส่ง transport factory ให้ GoogleCredentials และส่ง transport ให้ FirebaseOptions เพื่อให้ทั้งสองเส้นทาง HTTP ได้รับ proxy
กำหนดค่าอินพุต 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 นั้นแยกต่างหาก