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

FCM V1 API迁移遇SENDER_ID_MISMATCH错误排查求助

解决FCM V1迁移中的SENDER_ID_MISMATCH 403错误(Elixir + Pigeon + Goth)

核心问题定位

SENDER_ID_MISMATCH本质是服务账号对应的Firebase项目与客户端FCM令牌关联的Firebase项目不匹配,哪怕服务账号有管理员权限,项目不对就会触发PERMISSION_DENIED错误。

分步解决方案

1. 确认FCM令牌的归属项目

  • 让测试用户用更新后的google-services.json重新构建应用,完全卸载旧应用后重装,退出登录再获取新的FCM令牌。
  • 打开Firebase控制台,进入该令牌对应的项目,在「Cloud Messaging」→「发送测试消息」中输入这个令牌,发送测试消息。如果测试失败,说明客户端google-services.json仍未正确配置:
    • 确保Android端google-services.json放在app模块根目录
    • 检查app/build.gradle中是否添加了apply plugin: 'com.google.gms.google-services'
    • 同步项目后重新打包安装

2. 创建/匹配服务账号

  • 打开Firebase控制台(和令牌归属的同一个项目),点击左上角齿轮→「项目设置」→「服务账号」→「生成新的私钥」,下载JSON文件。这个服务账号必须和令牌所属项目完全一致。
  • 配置服务账号权限:
    1. 进入同一个项目的Google Cloud控制台→「IAM与管理员」→「IAM」
    2. 找到刚创建的服务账号,点击编辑,添加「Firebase Admin SDK Administrator Service Agent」角色(这个角色专门用于FCM发送,权限足够,无需全局管理员)

3. 配置Goth与Pigeon V2

  • Goth配置:确保config.exs指向正确的服务账号JSON:
# 本地文件方式
config :goth,
  json: "priv/service-account.json" |> File.read!()

# 环境变量方式(推荐生产环境)
config :goth, json: System.get_env("GCP_FCM_SERVICE_ACCOUNT_JSON")
  • Pigeon V2配置:启用FCM V1适配器并关联Goth:
config :pigeon, :fcm,
  adapter: Pigeon.FCM.V1,
  goth: Pigeon.FCM.V1.Goth
  • 发送消息示例:使用V1的消息结构:
def send_fcm_notification(token) do
  msg =
    Pigeon.FCM.V1.Message.new()
    |> Pigeon.FCM.V1.Message.put_token(token)
    |> Pigeon.FCM.V1.Message.put_notification(%{title: "通知标题", body: "通知内容"})
    |> Pigeon.FCM.V1.Message.put_data(%{"key" => "value"})

  Pigeon.FCM.V1.push(msg)
end

4. 清除缓存

  • Goth可能缓存旧的OAuth令牌,重启Elixir应用,或手动清除缓存:
Goth.TokenStore.delete("https://www.googleapis.com/auth/firebase.messaging")
  • 客户端确保完全卸载旧应用,避免旧令牌残留。

关于oauth_client的疑问解答

  • 旧服务账号文件中的oauth_client字段是用于OAuth 2.0客户端身份验证的,Goth完全不需要这个字段。Goth只依赖服务账号JSON中的private_key、client_email等核心字段,新生成的服务账号JSON自带这些信息,即使没有组织也能正常工作。
  • 不需要创建Cloud Identity或组织,旧的oauth_client只是额外配置,和FCM V1的发送逻辑无关,无需花费精力去创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:13:12