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
  • 相关阅读:
    requests实现接口自动化(三)
    api 25 PopupWindow会占据整个屏幕
    INSTALL_FAILED_USER_RESTRICTED
    事件分发_水平滑动和垂直冲突解决
    MPAndroidChart market右边显示不全问题
    SimpleDateFormat 取当前周的周一和周日的日期,当前月第一个和最后一天的日期
    Callable,Runnable比较及用法
    Android系统启动流程
    debug-stripped.ap_' specified for property 'resourceFile' does not exist
    Theme.AppCompat.Light的解决方法
  • 原文地址:https://www.cnblogs.com/zhaoxianxin/p/14529174.html
Copyright © 2011-2022 走看看