gpt4 book ai didi

php - 当授权 key 是我的服务器 key 时,Firebase MismatchSenderID

转载 作者:行者123 更新时间:2023-11-29 19:16:48 25 4
gpt4 key购买 nike

真的很奇怪,从来没有人问过这个问题。

我收到 MismatchSenderId 作为我的服务器 key 作为我的授权 key (服务器 key )的错误。另一方面,如果我的设备的 token 作为我的授权 key ,我的 push_notification() 返回结果是成功的,但我的设备没有收到通知。

我确定我的 token 是正确的,因为我能够在 firebase(单个设备)控制台中使用 token 发送到单个设备。

然后将我引向另一个 question , 但我想在转到通知部分之前确认这个问题

实际上我很迷茫,因为所有 MismatchSenderId 错误都通过替换为正确的服务器 key 来解决。

    <?php 
require "dbconfig.php";

$sql = "SELECT token FROM tokendb";
$result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());
$tokens = array();

while($row = mysql_fetch_assoc($result))
{
echo $row['token']; //this shows the same token compared to the token show in logcat(visual studio)
$tokens[] = $row["token"];

echo '<form id="form1" name="form1" method="post" action="">'.
'<p>From<br>'.
'<input type="text" size="100" maxlength="100" name="From" id="From" /><br>'.
'<p>Title<br>'.
'<input type="text" size="100" maxlength="100" name="Title" id="Title" />'.
'<br>'.
'<input type="submit" name="Send" id="Send" value="Send" />'.
'</form>';

}

$message = array("message" => "notification test");
$message_status = sendFCMMessage($message, $tokens);
echo $message_status;

function sendFCMMessage($message,$target){

//FCM API end-point
$url = 'https://fcm.googleapis.com/fcm/send';

$fields = array();
$fields['body'] = $message;
if(is_array($target)){
$fields['registration_ids'] = $target;
}else{
$fields['to'] = $target;
}

//header with content_type api key
$headers = array(
'Content-Type:application/json',
'Authorization:key=********'
);
//CURL request to route notification to FCM connection server (provided by Google)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
if ($result === FALSE) {
die('Oops! FCM Send Error: ' . curl_error($ch));
}
curl_close($ch);
return $result;
}

?>

编辑:这个简短的 php 代码也给我 MismatchSenderId 错误

  <?php
$ch = curl_init("https://fcm.googleapis.com/fcm/send");
$header=array('Content-Type: application/json',
"Authorization: key=***(serverkey from project)");
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"notification\": { \"title\": \"Test desde curl\", \"text\": \"Otra prueba\" }, \"to\" : \"my device's token\"}");

curl_exec($ch);
curl_close($ch);
?>

更新

卸载并重新安装该应用程序解决了该问题。

最佳答案

MismatchSenderId当您尝试发送到与不同发件人(项目)关联的注册 token 时遇到错误。来自文档:

A registration token is tied to a certain group of senders. When a client app registers for FCM, it must specify which senders are allowed to send messages. You should use one of those sender IDs when sending messages to the client app. If you switch to a different sender, the existing registration tokens won't work.

确保您使用的服务器 key 来自与注册 token 关联的同一发件人项目。您可以通过检查您的 google-services.json 文件并查看其中的发件人 ID 是否与您用于发送消息的 Firebase 项目中可见的发件人 ID 相匹配来执行此操作.

对于不接收消息的问题,您的代码发送的负载结构是什么有点不清楚。尝试使用 notification 和/或 data 消息负载检查它是否是结构正确的消息负载。

关于php - 当授权 key 是我的服务器 key 时,Firebase MismatchSenderID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43244901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com