【问题标题】:getting MismatchSenderId with firebase serverside使用 Firebase 服务器端获取 MismatchSenderId
【发布时间】:2017-11-22 09:37:43
【问题描述】:

我正在尝试使用存储在我的服务器中的 php 脚本发送通知,我得到了 MismatchSenderId。

$to="device_id";
$title="MYAPP Push";
$message=" MYAPP Push Notification Message";

sendPush($to,$title,$message);

function sendPush($to,$title,$message){
  // API access key from Google API's Console
  // replace API
  define( "API_ACCESS_KEY", "server_key_provided_by_firebase");

  $registrationIds = array($to);

  $msg = array(
    'message' => $message,
    'title' => $title,
    'vibrate' => 1,
    'sound' => 1
    // you can also add images, additionalData
  );

  $fields = array(
    'registration_ids' => $registrationIds,
    'data' => $msg
  );

  $headers = array(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
  );

  $ch = curl_init();
  curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
  curl_setopt( $ch,CURLOPT_POST, true );
  curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
  curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
  curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
  curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
  $result = curl_exec($ch );

  curl_close( $ch );
  echo $result;
}

这是我运行 php 脚本时遇到的错误: {"multicast_id":7804476702639319453,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"MismatchSenderId"}]}

我已经检查了 stackoverflow 中的每一个问题,但无法解决。

我正在使用 firebase(火花计划)并使用 Phonegap 开发应用程序。我认为这与应用无关

有什么想法???

【问题讨论】:

    标签: php firebase firebase-cloud-messaging phonegap


    【解决方案1】:

    将您的 google-service.json 文件复制到根文件夹(包含 www、config.xml 等)。

    第 1 步: 登录到您的 Firebase 控制台。

    第 2 步: 在项目概览设置中,复制 Cloud Messaging ServerKey

    我的密钥前:

    `AAAAjXzVMKY:APA91bED4d53RX.....bla bla
    

    第 3 步: 更换钥匙

    define( "API_ACCESS_KEY", "My key");
    

    最后测试应用程序:D

    我使用节点成功发送了推送通知。

    var gcm = require('node-gcm');
    
    // Replace these with your own values.
    var apiKey = "MY_SERVER_KEY";
    var deviceID = "MY_DEVICE_ID";
    
    var service = new gcm.Sender(apiKey);
    var message = new gcm.Message();
    message.addData('title', 'Hi');
    message.addData('body', 'BLA BLA BLA BLA');
    message.addData('actions', [
      { "icon": "accept", "title": "Accept", "callback": "app.accept"},
      { "icon": "reject", "title": "Reject", "callback": "app.reject"},
    ]);
    
    service.send(message, { registrationTokens: [ deviceID ] }, function (err, response) {
    	if(err) console.error(err);
    	else 	console.log(response);
    });

    【讨论】:

    • 我这样做了,但仍然得到 MismatchSenderId。我是否必须从特定域执行此操作?
    • @RaffaeleColleo 请参考这个Phonegap推送通知研讨会Here
    【解决方案2】:

    documentation for this error 声明:

    注册令牌与特定的发件人组相关联。当一个 客户端应用注册 FCM,它必须指定哪些发件人是 允许发送消息。您应该在以下情况下使用其中一个发件人 ID 向客户端应用程序发送消息。如果你切换到不同的 发件人,现有的注册令牌将不起作用。

    您应该仔细检查您使用的服务器密钥是否来自用于生成构建应用程序的google-services.json 文件的同一项目。 google-services.json 文件顶部的 project_number 必须与 Firebase 控制台的项目设置 Cloud Messaging 选项卡中显示的发件人 ID 相同。

    【讨论】:

    • 嗨@Bob。它是。文件 google-services 位于项目的文件夹根目录(与 config.xml 相同的位置)。它应该放在www文件夹中吗?谢谢
    • @RaffaeleColleo:抱歉——不知道。我不熟悉 Cordova 构建。
    • 有人可以帮我解决这个问题吗?
    猜你喜欢
    • 2012-07-04
    • 2017-01-20
    • 2016-11-04
    • 2016-10-18
    • 2021-12-21
    • 2020-04-01
    • 2017-08-31
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多