You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase FCM报InvalidRegistration错误,求排查(附PHP代码)

FCM推送出现InvalidRegistration错误的排查与修复

错误返回信息

{"multicast_id":2590279481594016535,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}

代码中的核心问题

  1. 无效的设备令牌生成
    你用Str::random(60)生成的是随机字符串,这完全不符合FCM设备令牌的要求。FCM的设备令牌是由客户端(iOS/Android/Web)向Firebase服务器注册后返回的唯一标识,后端不能随机生成。

  2. 变量引用错误
    代码中存储的是$deviceToken,但推送时使用的是未定义的$token变量,这会导致推送请求传递的是无效值(可能为null或未初始化的变量),直接触发InvalidRegistration错误。

修复步骤

  • 获取真实的FCM设备令牌:从客户端获取Firebase返回的有效令牌,比如:

    • Android端:调用FirebaseMessaging.getToken()
    • iOS端:调用Messaging.messaging().token(completion:)
    • Web端:调用messaging.getToken({ vapidKey: 'YOUR_VAPID_KEY' })
      将获取到的令牌传给后端,存储到用户的device_token字段。
  • 修正变量引用:推送时直接使用用户记录中存储的有效令牌,比如$token = $user->device_token;,确保data中的"to"字段是真实有效的FCM令牌。

  • 开启SSL验证:代码中CURLOPT_SSL_VERIFYPEER设为false存在安全风险,建议改为true,确保请求的安全性。

  • 验证SERVER_KEY:确认你的SERVER_KEY是从Firebase控制台的「云消息传递」设置中获取的有效密钥,避免因密钥错误导致的间接问题。

修正后的代码示例

// 从客户端请求中获取真实的FCM设备令牌
$deviceToken = request()->input('fcm_token');

// 存储到用户记录
$user->forceFill([
    'device_token' => $deviceToken,
])->save();

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Authorization: key=YOUR_VALID_SERVER_KEY',
    'Content-Type: application/json'
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

// 使用用户存储的有效设备令牌
$token = $user->device_token;
$data = array(
    "to" => $token,
    "notification" => array(
        "title" => '登录成功',
        "body" => '您已成功登录。',
        "sound" => 'default'
    )
);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$result = curl_exec($ch);

if ($result === FALSE) {
    die('Curl失败: ' . curl_error($ch));
}

curl_close($ch);

内容的提问来源于stack exchange,提问作者Ronak Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:26:22