我应该为Firebase Cloud Messaging中的授权密钥指定什么

Tam*_*gár 6 https cordova firebase firebase-cloud-messaging firebase-notifications

你能帮助我(以及其他像我一样沮丧的人)来了解Google Firebase的工作方式吗?文件太混乱了,这让我觉得自己是一个白痴.

这就是事情.我只是尝试向我的Cordova应用程序的用户发送推送消息,注意到他们有关更新或其他内容.在过去的好时光(可能是几个星期前),它简称为推送消息.现在有这个Firebase的东西,他们改变并重命名了一切.我想我需要的是目前称为Notifications,但还有Cloud Messaging,我真的没有看到确切的区别.

然后完全混淆了术语.显然有一个https API来发送通知,但它的记录很少.有几个网站在解释它,但它们似乎没有就术语达成共识.有些人提到"API密钥",其他人称为"身份验证密钥",Google本身称之为"授权密钥",但当我在控制台上查看我的项目设置时,我看到"服务器密钥"和"应用程序ID" google_services.json文件包含"private_key_id".因此有大量的WTF.

有人可以澄清我应该在这里提供什么?这就是应该如何为Firebase API制定POST请求:

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA  <-- WHAT IS THIS?

{ "data": {
    "score": "5x1",
    "time": "15:10"
 },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..." <-- AND THIS?
}
Run Code Online (Sandbox Code Playgroud)

什么是"授权"?如果我想将通知发送给所有用户,那么"to"值会变成什么,如果我想定位特定组,该怎么办?(对于初学者,如果它只是到达每个设备,我会很高兴.)这些参数是否有良好的文档?

此外,Google似乎假设每个人都使用Java工作并仅提供Java示例.至少我没有发现任何可用于PHP,Node.js或纯JavaScript的东西.我不需要的所有功能都有很多例子.

更新:我刚刚发现"授权"应该是我项目的云消息传递选项卡下Firebase控制台上的"服务器密钥".(好东西他们没有太多地隐藏它.)但是,如果我用cURL从PHP发送一个POST,它会返回一个HTTP代码为0的空响应.

Tam*_*gár 18

好吧,我自己弄清楚了,现在觉得自己有点不那么白痴了.希望有些人仍然会发现它有用.

"授权"值应该是我项目的云消息传递选项卡下Firebase控制台上的"服务器密钥".

"to"参数是必需的.如果省略,服务器将以简单的"to"响应.无论如何,它以漂亮的JSON响应.

如果要向所有设备发送消息,则应指定:

"to": "/topics/all"
Run Code Online (Sandbox Code Playgroud)

服务器响应仅在您成功时才会响应:

{"message_id":4988221490411655075}
Run Code Online (Sandbox Code Playgroud)

以下是出现任何错误时的样子:

{"multicast_id":5691752204334485119,
 "success":0,
 "failure":1,
 "canonical_ids":0,
 "results":[{
               "error":"MissingRegistration"
            }]
}
Run Code Online (Sandbox Code Playgroud)

参数和返回值在这里解释:

https://firebase.google.com/docs/cloud-messaging/http-server-ref

Firebase控制台仅保留从控制台本身发送的消息.

对于Cordova我使用这个简单的插件,它工作正常:

https://www.npmjs.com/package/cordova-plugin-fcm

这是一个结构良好的JSON请求,与PHP中的cURL一起发送(也包括在内):

$json_data = '{ "data": { 
                  "price": "1000",
                  "currency": "USD" 
                },
                "notification": {
                  "title": "Hey you got a message",
                  "body": "Your mother stil loves you",
                  "sound": "default",
                  "click_action": "FCM_PLUGIN_ACTIVITY",
                  "icon": "icon_name"
                },
                "to": "/topics/all",
                "priority": "high"
              }';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
                                            'Content-Type: application/json',                                                                                
                                            'Content-Length: '.strlen($json_data),
                                            'Authorization:key=AIzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'  
                                          ));           
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)