【问题标题】:FCM Push Notification: MismatchSenderIdFCM 推送通知:MismatchSenderId
【发布时间】:2017-12-09 05:30:42
【问题描述】:

早安,

我正在尝试使用 FCM 中的此 URL 发送消息:

https://fcm.googleapis.com/fcm/send

带有标题的

    Authorization value of **key:*Key from Firebase Console***
    Content-Type: **application/json**

正文由以下组成:

    {
       "to" : "MyKey generated",
       "notification" : {
       "body" : "Hey",
       "title" : "Hey"
    }  
 }

但我总是收到的结果是这样的:

     {
        "multicast_id": 7942550122547405787,
        "success": 0,
        "failure": 1,
        "canonical_ids": 0,
        "results": [
            {
               "error": "MismatchSenderId"
           }
      ]
    }

我得到的服务器密钥来自这里:

Server Key

我的 URL 参考是 FCM 服务器中的文档。

我正在 Postman 中对此进行测试。我错过了什么?谢谢

【问题讨论】:

标签: android firebase push-notification google-cloud-messaging firebase-cloud-messaging


【解决方案1】:

根据文档

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

所以听起来您正在尝试向与发件人 ID 无关的 ID 发送推送通知。您应该验证您在正确的位置拥有正确的密钥

【讨论】:

  • 这是否意味着我从移动应用收到的令牌与发件人 ID 没有关联?我正在与后端合作,不幸的是,我必须与移动开发人员确认这一点,对吧?
  • 这意味着您使用了错误的服务器密钥以及您的应用程序的发件人 ID,或者您使用的是使用不同发件人 ID 创建的旧 ID。由于应用程序中需要发送者 ID 来创建实例 ID,因此您的密钥在某处搞砸了。我会在 firebase 控制台的项目设置中验证您的密钥
  • 另一个测试:我在邮递员中使用的令牌与我在firecloud中的通知链接中使用的令牌相同。但它在firecloud的通知功能时有效
  • 我明白了。应用程序中的键可能被弄乱了。不太确定如何执行此操作,但我会询问移动开发人员。
  • 我遇到了这个错误,我认为是我从保存到后端的移动应用程序(从 firebase 获得)收到的 FCMToken 错误,并且保存了正确的令牌这个错误
【解决方案2】:

您的 Android 应用上的 Google 服务似乎配置不正确。

登录 Firebase 控制台,打开您的项目(点击齿轮图标)。在“常规”选项卡下,向下滚动到“下载最新的配置文件”,然后单击按钮下载 google-services.json(其中应包含正确的项目和发件人 ID)

将此发送给您的移动开发人员以包含在应用程序中,一旦应用程序发送了有效的推送令牌,请尝试再次发送。

【讨论】:

    【解决方案3】:

    标题必须是这样的

    Content-Type:application/json
    Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA
    

    检查服务器密钥的有效性

    api_key=YOUR_SERVER_KEY
    
    curl --header "Authorization: key=$api_key" \
           --header Content-Type:"application/json" \
           https://fcm.googleapis.com/fcm/send \
           -d "{\"registration_ids\":[\"ABC\"]}"
    

    如果一切正常,则需要重新检查 senderId

    【讨论】:

    • 我不明白标题。我只是没有将授权值放在我的帖子中。
    【解决方案4】:

    此错误是由于令牌无效 我解决了,正确输入token

    【讨论】:

    • 这应该是评论而不是答案。
    【解决方案5】:

    通过 POSTMAN 发布 FCM

    授权:key=YOUR-SERVER-KEY
    内容类型:application/json

    现在点击Body而不是选择Row并添加值作为对象,如下所示
    确保行在JSON(application/json)

    {
    "to": "cpa8cZPjq-w:APA91bF122f1Rnhu9v47bL
    YMajaNTHAIU5SzItDwTy9o2MCIveG0PlK78VPvp3d
    CqjwnUKZ4
    ngi1trSyM3_aXttW62iknFfbPGtjRLhZr6wq-3qFdboz8gzdOGPz**********",
    
    "notification": {
    
    "body": "Hello",
    "title": "This is test message."
    }
    }
    

    POST /fcm/发送 HTTP/1.1
    主机:fcm.googleapis.com

    【讨论】:

      【解决方案6】:

      这个问题仅仅意味着服务器和客户端使用了 2 个不同的 firebase 项目。当您不小心按错键并混淆了您的开发、暂存或生产环境时,很可能会发生这种情况。

      修复步骤:

      1. 检查您的服务器,确保 firebase admin / fcm 中的密钥与您的目标环境匹配
      2. 检查您的客户端,确保它使用相同的目标环境生成推送令牌

      您可以通过使用 Firebase 控制台中生成的推送令牌发送测试推送通知来针对服务器确认客户端环境。只有在正确的 Firebase 项目中使用推送令牌时,您才会收到测试通知。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-04-21
        • 2020-09-17
        • 1970-01-01
        • 2022-08-22
        • 2018-06-24
        • 2017-01-17
        • 1970-01-01
        相关资源
        最近更新 更多