如何使用 Postman 通过 HTTP v1 API 设置和测试 Firebase 云消息传递 (FCM) 推送通知?

问题描述 投票:0回答:1

我正在尝试通过 Postman 使用 Firebase Cloud Messaging (FCM) 和新的 HTTP v1 API 设置和测试推送通知。我需要生成 OAuth 2.0 令牌来验证我的请求并向特定设备发送推送通知。我有 FCM 服务帐户 JSON 和设备令牌。有人可以指导我完成在 Postman 中进行设置的过程,包括如何生成 OAuth 2.0 令牌并格式化请求吗?

以下是我掌握的详细信息:

  • 来自 Firebase 的服务帐户 JSON 文件
  • 目标设备的设备令牌
  • Postman 用于执行 HTTP 请求

使用 Python 生成 OAuth 2.0 令牌并设置 Postman 请求以使用 FCM 的 HTTP v1 API 发送推送通知的步骤是什么?

flutter firebase push-notification firebase-cloud-messaging postman
1个回答
0
投票

我相信这可能对其他开发者有帮助。我会尝试尽可能简单地分解步骤。

第 1 步 - 下载 Firebase 私钥

Firebase 控制台 => 项目设置 => 服务帐户 => 生成新的私钥

enter image description here

第 2 步 - 使用 FCM 服务帐户凭据生成 OAuth 2.0 令牌。你可以用Python来生成它

  import json
  import jwt
  import time
  import requests  # This requires the `requests` library

  # Load the service account key JSON file
  with open('path_to_your_service_account.json', 'r') as f:
      service_account = json.load(f)

  # Define the JWT payload
  payload = {
      'iss': service_account['client_email'],
      'sub': service_account['client_email'],
      'aud': 'https://oauth2.googleapis.com/token',
      'iat': int(time.time()),
      'exp': int(time.time()) + 3600,
      'scope': 'https://www.googleapis.com/auth/firebase.messaging'
  }

  # Encode the JWT
  encoded_jwt = jwt.encode(payload, service_account['private_key'], algorithm='RS256')

  # Request an OAuth 2.0 token
  response = requests.post('https://oauth2.googleapis.com/token', data={
      'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer',
      'assertion': encoded_jwt
  })

  oauth2_token = response.json()['access_token']
  print(oauth_token)

如果您收到此错误

找不到算法“RS256”。你安装了加密技术吗

确保运行

pip install cryptography
这会将加密包安装到您的计算机上。

打印语句的格式为

ya29.ElqKBGN2Ri_Uz...HnS_uNreA
,这是 Oauth 2.0 令牌。

第 3 步 - Postman 配置,插入您在 postman 配置中找到的令牌

enter image description here

您可以从 firebase 项目的 url 获取您的项目 id

Method: POST
URL: https://fcm.googleapis.com/v1/projects/YOUR_PROJECT_ID/messages:send
Headers:
Content-Type: application/json
Authorization: Bearer {oauth2_token}

通知正文

  "message": {
    "token": "DEVICE_REGISTRATION_TOKEN",
    "notification": {
      "title": "Test Notification",
      "body": "This is a test message from Postman."
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.