Firebase FCM: неверный аргумент - PullRequest
0 голосов
/ 19 мая 2018

Я впервые пробую FCM, поэтому просто использую их пример кода.На самом деле я даже отправляю их образцы сообщений.Следующий код, который взят из документации (кроме токена, полученного из их образца Android-инструмента обмена сообщениями), завершается ошибкой:

exports.onBroadcastCreated =    functions.firestore.document('/apath    /...').onCreate(async event => {
   notification:{
  title:"Portugal vs. Denmark",
  body:"great match!"
},
token: 'eU2YUsi4Ugs:APA91bFH5bR9B1xosqrjvpw7HG4UkYTlDizmtra9pQRge-b4JxRbLjq9PVw91rqZytkUMKJXjPHd_dRlHHMk1bExCo_6Dxv99Vfp8MYz-H16Y9zmG8EFlWXNH4Tw_h6NRj2z1gLcz10m'
};

// Send a message to the device corresponding to the provided
// registration token.
return admin.messaging().send(message)
  .then((response) => {
    // Response is a message ID string.
    console.log('Successfully sent message:', response);
  })
  .catch((error) => {
    console.log('Error sending message:', error);
    console.log(message);
  });

}

Так что вы можете увидеть уведомлениебудет отправлен из облачной функции при создании документа.Функция называется OK, но журнал показывает это:

Error sending message: { Error: Request contains an invalid argument.
    at FirebaseMessagingError.Error (native)
    at FirebaseMessagingError.FirebaseError [as constructor] (/user_code   /node_modules/firebase-admin/lib/utils/error.js:39:28)
    at FirebaseMessagingError.PrefixedFirebaseError [as constructor] (/user_code/node_modules/firebase-admin/lib/utils/error.js:85:28)
    at new FirebaseMessagingError (/user_code/node_modules/firebase-admin/lib/utils/error.js:241:16)
    at Function.FirebaseMessagingError.fromServerError (/user_code/node_modules/firebase-admin/lib/utils/error.js:271:16)
    at /user_code/node_modules/firebase-admin/lib/messaging/messaging-api-request.js:149:50
    at process._tickDomainCallback (internal/process/next_tick.js:135:7)
  errorInfo: 
   { code: 'messaging/invalid-argument',
     message: 'Request contains an invalid argument.' },
  codePrefix: 'messaging' }

{ notification: { title: 'Portugal vs. Denmark', body: 'great match!' },
  token: 'eU2YUsi4Ugs:APA91bFH5bR9B1xosqrjvpw7HG4UkYTlDizmtra9pQRge-b4JxRbLjq9PVw91rqZytkUMKJXjPHd_dRlHHMk1bExCo_6Dxv99Vfp8MYz-H16Y9zmG8EFlWXNH4Tw_h6NRj2z1gLcz10m' }

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

У меня было " в моих строках в моем json, я изменил его на ', и это устранило проблему!

$response = $client->post(
            'https://fcm.googleapis.com/v1/projects/xxx/messages:send',[
            'headers' => [
                'Content-Type' => 'application/json',
                'Authorization'     => 'Bearer ' . $token['access_token'],
            ],
            GuzzleHttp\RequestOptions::JSON => [
                "message" => [
                    "token"  => "dflhjldkjhflksfshklsf",
                    "notification" => [
                        "title" => "FCM Message",
                        "body" => "This is an FCM notification message!"
                    ]
                ]
            ]
        ]);

на:

$response = $client->post(
                'https://fcm.googleapis.com/v1/projects/xxx/messages:send',[
                'headers' => [
                    'Content-Type' => 'application/json',
                    'Authorization'     => 'Bearer ' . $token['access_token'],
                ],
                GuzzleHttp\RequestOptions::JSON => [
                    'message' => [
                        'token'  => 'dflhjldkjhflksfshklsf',
                        'notification' => [
                            'title' => 'FCM Message',
                            'body' => 'This is an FCM notification message!'
                        ]
                    ]
                ]
            ]);

Надеюсь этопомогает!

0 голосов
/ 28 июня 2018

Как отметил Карлос Фернандес Санс, одной из причин этого является то, что клиент и сервер подключены к различным проектам Firebase.Имя проекта отображается в файле google-services.json на клиенте и в учетных данных json на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...