我尝试使用 FCM 发送通知,但出现错误, 我在 Firebase 中创建了一个新项目。
如何生成新的服务器密钥?如下图所示?
授权:承载ya29.ElqKBGN2Ri_Uz...HnS_uNreA
我的PHP代码
<?php
$serverKey = 'ya29.a0AfB_byDuIRA2ZCRIgemWrXw0utBdCHfdlNJAwVGve5NNgeTPp9X_KMuvGS7v9AgjAY4wWLL2MHjxdmpznGJ2ZC9Y6PJMP6472RQ82g0GtS_xjZKDlrJKJYgeTw-2KwNcTgTMEUL-W9Tq1uXypuscSQX6jUsDMgo-RRHuaCgYKASASARISFQHGX2Mij39fW1eEtCcxC3aouQsyyw0171';
$deviceToken = 'MY VALID DEVICE TOKEN';
$messageData = [
'message' => [
'token' => $deviceToken,
'notification' => [
'title' => 'Title of the Notification',
'body' => 'Body of the Notification',
],
],
];
$jsonData = json_encode($messageData);
$headers = [
'Authorization: Bearer ' . $serverKey,
'Content-Type: application/json',
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/v1/projects/push-notification-g28f2/messages: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, $jsonData);
$result = curl_exec($ch);
$decodedResponse = json_decode($result, true);
echo 'Response: <pre>' . json_encode($decodedResponse, JSON_PRETTY_PRINT) . '</pre>';
curl_close($ch);
?>
回应:
{
"error": {
"code": 403,
"message": "SenderId mismatch",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "SENDER_ID_MISMATCH"
}
]
}
}
请帮我解决这个问题,我被困得很厉害,我不知道如何解决。 我已经参考了Link,但仍然面临同样的错误。
经过Google太多的研发,我发现我的$serverKey',生成错误, 就像下图一样,有人可以帮忙吗? 如何生成新的服务器密钥?如下图所示?
授权:承载ya29.ElqKBGN2Ri_Uz...HnS_uNreA
我尝试使用Postman添加服务器密钥,我已经从Google Console下载了JSON文件并一一添加了数据,如下所示
在 Postman 中打开“授权”选项卡,选择 Type =“OAuth 2.0”,然后单击“获取新访问令牌”。出现对话框。
领域: 代币名称 - 输入您想要的内容
授权类型 = 授权代码
回调 URL = 来自下载的 json 的redirect_uris
身份验证 URL = auth_uri
访问令牌 URL = token_uri
客户端 ID = client_id
客户端秘密 = client_secret
范围 =“https://www.googleapis.com/auth/firebase.messaging”
状态 - 留空
客户端身份验证 = 默认,作为基本身份验证标头发送
点击“请求令牌”
并获取新的服务器密钥
我仍然遇到同样的错误
邮差图片
同样的情况,请问你解决了吗?