Firebase 云消息传递服务器帐户密钥过期

Firebase Cloud Messaging Server Account key expires

所以我有一个应用程序需要 Firebase 服务帐户密钥。如文档中所述,它是一个 短暂 密钥。那么我是否需要在每次过期时手动继续下载服务帐户密钥 JSON 文件?

1.This 是我用来从 JSON 文件中提取令牌的代码。

SCOPES = ['https://www.googleapis.com/auth/firebase.messaging']
def _get_access_token():
    credentials = ServiceAccountCredentials.from_json_keyfile_name(
        '{valid_path/file.json}', SCOPES)
    access_token_info = credentials.get_access_token()
    return access_token_info.access_token

2.The link 是:https://fcm.googleapis.com/v1/projects/{valid_project_id}/messages:send

3.Content-Type : application/json; UTF-8

4.Authorization : Bearer *access_token_returned_in_step_1*

5.Body

{
   "message":{
      "name":"name_field",
      "android":{
         "ttl":"81000s",
         "data":{
            "Name":"Z",
            "Surname":"Z"
         },
         "notification":{
            "title":"Hello",
            "body":"World"
         }
      },
      "topic":"test_topic"
   }
}

6。 一段时间内效果很好。然后,

{
   "error":{
      "code":401,
      "message":"Request had invalid authentication credentials. 
    Expected OAuth 2 access token, login cookie or other valid 
    authentication credential. See 
    https://developers.google.com/identity/sign-in/web/devconsole- 
   project.",
      "status":"UNAUTHENTICATED"
   }
}

7。当我再次 下载服务帐户密钥 JSON 文件时 和 运行 再次使用相同的程序, 它有效

那么,有没有办法绕过手动下载服务帐户密钥 JSON 文件?

重新使用 从 service_account.json 文件中提取的访问令牌并将其粘贴到 Postman 中以进行测试。这就是问题所在。每次需要通过 FCM 发送消息时都需要生成令牌。所以,步骤 1 即。 _get_access_token()需要在每次发送FCM通知/数据消息前执行。 第 1 步 必须与 FCM 通信以检索最新的有效令牌。