web-dev-qa-db-ja.com

firebaseクラウドメッセージングリクエストに無効な引数が含まれています

Firebaseクラウドメッセージング管理APIを使用してメッセージを送信しているときにエラーが発生します。

エラーメッセージは以下です

原因:com.google.api.client.http.HttpResponseException:400 Bad Request {"error":{"code":400、 "message": "リクエストに無効な引数が含まれています。"、 "errors":[{" message ":"リクエストに無効な引数が含まれています。 "、" domain ":" global "、" reason ":" badRequest "}]、" status ":" INVALID_ARGUMENT "}}

ここに私の管理設定を入れてください。

FileInputStream serviceAccount = new FileInputStream("My service accout file.json");

FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount))
                    .setDatabaseUrl("https://deliveryeat-1aa42.firebaseio.com").build();

FirebaseApp.initializeApp(options);

メッセージ送信コードは以下です

// This registration token comes from the client FCM SDKs.
String registrationToken = "YOUR_REGISTRATION_TOKEN";

// See documentation on defining a message payload.
Message message = Message.builder().putData("score", "850").putData("time", "2:45").setToken(registrationToken).build();

// Send a message to the device corresponding to the provided
// registration token.
String response = FirebaseMessaging.getInstance().sendAsync(message).get();
// Response is a message ID string.
System.out.println("Successfully sent message: " + response);

私が使用しているMavenの依存関係は次のとおりです

<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-admin</artifactId>
    <version>5.9.0</version>
</dependency>

だから誰もこれで私を助けることができますか?私は何を間違えていますか?

8
Kamran Omar

registrationTokenの形式が無効であると思われます。 152文字にする必要があります。

それを確認するには、setToken(registrationToken)の代わりに setTopic( "test") を使用してメッセージを作成してみてください。

6
Bob Snyder

これの1つの考えられる原因は、クライアントとサーバーが異なるfirebaseプロジェクトに接続されていることです。プロジェクト名は、クライアントのgoogle-services.jsonファイルとサーバーの資格情報jsonに表示されます。

Firebase FCM:無効な引数

2
Aur Saraf

さらにもう1つの原因は、メッセージが大きすぎることです。

通知メッセージには、オプションのデータペイロードを含めることができます。両方のメッセージタイプの最大ペイロードは4KBです。ただし、Firebaseコンソールからメッセージを送信する場合は例外で、1024文字の制限が適用されます。

https://firebase.google.com/docs/cloud-messaging/concept-options

1
Sello Mkantjwa

私の場合、問題は特定のキーが通知データペイロードで許可されていないことでした。具体的には、キー「from」は禁止されています。

Firebaseデータメッセージペイロード

0
J M Rossy