0
0

Firebase Admin SDK (Java) を使って FCM Push を Proxy 越え送信する場合の注意

Last updated at Posted at 2024-05-17

概要

Firebase Admin SDK (Java) を使って FCM Push を Proxy サーバ越えで送信するときにドハマリしたので、注意点を記載します。

なお、Proxy 設定を行う手順は Firebase Admin SDK ドキュメントには一切記載がありません
(そのくらい書いといてよね >Google)

FCM Push の送信手順(Proxyなし)

Proxyなしの場合の送信手順は 送信リクエストを許可する に記載されています。

このうち重要なのは初期化部分で、以下のようなコードになります。

// GoogleCredentials を生成
GoogleCredentials googleCredentials = GoogleCredentials
    .fromStream(new FileInputStream("service-account.json"))
    .build();

// FirebaseOptions を生成
FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .build();

// FirebaseApp を初期化
FirebaseApp.initializeApp(options);        

Proxy 越えが必要な場合

Proxy 越えが必要な場合は HttpTransport を Proxy 設定付きで作成する必要があります。
これを GoogleCredentials と FirebaseOptions の2箇所に設定する必要があります。

// Proxy 設定付きの HttpTransport を生成
Proxy proxy = new Proxy(Proxy.Type.HTTP, 
    new InetSocketAddress("proxy.example.com", "8080"));
HttpTransport httpTransport = new NetHttpTransport.Builder()
    .setProxy(proxy)
    .build();

// GoogleCredentials を生成
GoogleCredentials googleCredentials = GoogleCredentials
    .fromStream(new FileInputStream("service-account.json"),
        () -> httpTransport) // #1
    .build();

// FirebaseOptions を生成
FirebaseOptions options = FirebaseOptions.builder()
    .setCredentials(GoogleCredentials.getApplicationDefault())
    .setHttpTransport(httpTransport) // #2
    .build();

// FirebaseApp を初期化
FirebaseApp.initializeApp(options);  
  • GoogleCredentials
    • fromStream() の第2引数に HttpTransport の factory を設定する必要があります
  • FirebaseOptions
    • setHttpTransport() で HttpTransport を指定する必要があります

これで Proxy 越えで FCM Push 送信ができるはずです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0