使用firebase的Chrome网络应用返回mismatchsenderid错误

时间:2016-10-14 04:29:58

标签: web-services curl firebase push-notification firebase-cloud-messaging

我很抱歉这个问题被多次提出,但没有一个回复有助于解决我的问题。

我在我的网络应用程序中使用firebase并尝试通过php或terminal curl命令发送通知。尝试过两次都有同样的错误:

  

{ “multicast_id”:4984414565388562908, “成功”:0, “失败”:1, “canonical_ids”:0 “结果”:[{ “错误”: “MismatchSenderId”}]}

我从同一个地方直接从firebase获取API密钥和发件人ID。复制和粘贴,没有拼写错误。检查了大约50次... 100%确定发件人ID与API密钥匹配,因为我正在从同一屏幕复制和粘贴。

Firebase console

我从Chrome控制台获取端点:

Endpoint

再次,复制并粘贴没有拼写错误。

我的PHP文件:

<?php
// API access key from Google API's Console
define( 'API_ACCESS_KEY', '**API_KEY**' );
$registrationIds = array('**SUBSCRIPTION_ID**');
// prep the bundle
$msg = array
(
    'message'   => $_GET["message"],
    'title'     => $_GET["title"],
    'subtitle'  => $_GET["subtitle"],
    'tickerText'    => $_GET["ticker"],
    'vibrate'   => 1,
    'sound'     => 1,
    'largeIcon' => 'http://a4.mzstatic.com/au/r30/Purple4/v4/d2/8b/e4/d28be43c-9a6a-4b91-1981-a108ba5cec84/icon175x175.png',
    'smallIcon' => 'http://www.uidownload.com/files/303/56/11/small-arrow-left-fast-rewind-icon.png',
    'click_action' => 'https://aiatsis.gov.au'
);
$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://android.googleapis.com/gcm/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;

?>

我的清单文件:

{
  "name": "Webpush",
  "gcm_sender_id": "**SENDER_ID**"
}

我正在使用的curl终端命令是:

curl --header "Authorization: key=**API_KEY**" --header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "{\"registration_ids\":[\"**SUBSCRIPTION_ID**\"]}"

我不知道为什么这不起作用。我试过了:

  • 检查密钥与发件人ID匹配约150次。
  • 删除我的firebase项目并使用新的API密钥和发件人ID重新开始(是的,我在执行此操作后生成了新的端点订阅ID)。
  • 如上所述,尝试了php和终端推送请求。

我的选项用完了。并且如前所述,API密钥已经多次匹配相应的发件人ID。我对这一点100%肯定。至于我对“MismatchSenderId”错误的理解,他们试图告诉我API密钥和发件人ID不匹配。他们匹配。

  • 发件人ID与API密钥匹配
  • 订阅ID是使用正确的发件人ID生成的

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:0)

在清单文件中,que gmc_sender_id对每个人都是相同的。 将其更改为:"gcm_sender_id": "103953800507"