zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Entity Framework 4 in Action读书笔记——第七章:持久化对象到数据库:使用SaveChanges持久化实体
    ASP.NET MVC+Colorbox做的一个Demo(一)
    Entity Framework 4 in Action读书笔记——第七章:持久化对象到数据库:持久化的一些技巧
    NHibernate初学者指南(4):定义数据库架构
    Entity Framework 4 in Action读书笔记——第六章:理解实体的生命周期(三)
    NHibernate初学者指南(1):开篇
    Entity Framework 4 in Action读书笔记——第七章:持久化对象到数据库:持久化修改的实体到数据库
    Java面试题每日五题(2010/02/26)
    Notes for Hadoop the definitive guide
    简明Java笔记
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/14529174.html
Copyright © 2011-2022 走看看