我很抱歉这个问题被多次提出,但没有一个回复有助于解决我的问题。
我在我的网络应用程序中使用firebase并尝试通过php或terminal curl命令发送通知。尝试过两次都有同样的错误:
{ “multicast_id”:4984414565388562908, “成功”:0, “失败”:1, “canonical_ids”:0 “结果”:[{ “错误”: “MismatchSenderId”}]}
我从同一个地方直接从firebase获取API密钥和发件人ID。复制和粘贴,没有拼写错误。检查了大约50次... 100%确定发件人ID与API密钥匹配,因为我正在从同一屏幕复制和粘贴。
我从Chrome控制台获取端点:
再次,复制并粘贴没有拼写错误。
我的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**\"]}"
我不知道为什么这不起作用。我试过了:
我的选项用完了。并且如前所述,API密钥已经多次匹配相应的发件人ID。我对这一点100%肯定。至于我对“MismatchSenderId”错误的理解,他们试图告诉我API密钥和发件人ID不匹配。他们匹配。
有谁知道为什么会这样?
答案 0 :(得分:0)
在清单文件中,que gmc_sender_id对每个人都是相同的。
将其更改为:"gcm_sender_id": "103953800507"
。