Go 服务端 向 firebase Android 端 fcm 信息
问题描述:
第一个问题是:
json input 文件格式不正确
此问题出在,没有获取 本项目最新的 密钥json文件
路径: 进入firebase 自己的项目 -> 项目设置 -> 服务账号 -> 生成新的私钥(json文件)
此json 文件用于 获取google 凭证 此凭证非 token 仅用于 在从服务器推送信息的 时候 添加至请求头。
通过刚刚的 json 文件 过去凭证,构建 request info
获取凭证: creds, err := google.CredentialsFromJSON(ctx, token, "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/firebase.messaging") t, errToken := creds.TokenSource.Token()
请求头 reqHeader := map[string]string{ "Content-Type": "application/json;charset=UTF-8", "Authorization": "Bearer " + t.AccessToken, }
第二个问题:
"error": {
"code": 403,
"message": "SenderId mismatch",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "SENDER_ID_MISMATCH"
}
]
}
此问题在于 两个原因 (fcm_token 不正确 或 过期 、 账号没有开通权限)
一、fmc_token 不正确, fcm_token 需要放在 请求体 中
fcm_token 获取途径 为 Android 客户端生成, 携带至后段,我们只需要拿到 客户端生成的 fcm_token 放入请求体中即可
此 fcm_token 会有过期情况,建议 仔细更细自己的 fcm_token
请求体:
Message struct {
Token string `json:"token"`
Data struct {
Skipto string `json:"skipto"`
Url string `json:"url"`
PicSize string `json:"pic_size"`
Image string `json:"image"`
ExtraInfo string `json:"extra_info"`
} `json:"data"`
Notification struct {
Body string `json:"body"`
Title string `json:"title"`
} `json:"notification"`
} `json:"message"`
请求 url : https://fcm.googleapis.com/v1/projects/mascash-23358/messages:send
二、权限
开通权限步骤: 项目设置 -> 用户和权限 -> 高级权限设置 -> IAM -> 找到服务账号 名称为 firebase-adminsdk 的账号
-> 点击后面的 修改权限 ->
添加权限 Firebase Admin SDK Administrator Service Agent、
Firebase Authentication Admin、
Service Account Token Creator、
Pub/Sub Publisher
)
(额外信息)firebase fcm 发送信息流程:
客户端生成fcm_token 发送至服务器 -> 服务器生成 组织数据 发送至 firebase -> firebase 将数据推送至手机
参考:
firebase获取注册令牌文档:
https://firebase.google.com/docs/cloud-messaging/android/first-message?authuser=0#retrieve-the-current-registration-token
网友参考:
https://blog.csdn.net/ex_xyz/article/details/109314272
https://segmentfault.com/a/1190000018978817
https://blog.csdn.net/weixin_34255793/article/details/88961851
邮箱: 1090055252@qq.com