

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon SNS 与 Firebase Cloud Messaging 身份验证设置集成
<a name="sns-fcm-authentication-methods"></a>

本主题介绍如何从 Google 获取用于该 API 所需的 FCM API (HTTP v1) 凭据， AWS CLI 以及。 AWS AWS 管理控制台

**重要**  
2024 年 3 月 26 日 – Amazon SNS 支持适用于 Apple 设备和 Webpush 目的地的 FCM HTTP v1 API。我们建议您在 2024 年 6 月 1 日或之前将现有的移动推送应用程序迁移到最新的 FCM HTTP v1 API，以避免应用程序中断。  
2024 年 1 月 18 日 – Amazon SNS 推出了对 FCM HTTP v1 API 的支持，用于向 Android 设备发送移动推送通知。  
2023 年 6 月 20 日 - Google 弃用了其 Firebase Cloud Messaging（FCM）旧版 HTTP API。Amazon SNS 现在支持使用 FCM HTTP v1 API 向所有设备类型传送。我们建议您在 2024 年 6 月 1 日或之前将现有的移动推送应用程序迁移到最新的 FCM HTTP v1 API，以避免中断。

您可以通过提供将您识别为应用程序开发人员的信息，授权 Amazon SNS 将推送通知发送到您的应用程序。要进行身份验证，请在[创建平台应用程序时](https://docs.aws.amazon.com/sns/latest/api/API_SetPlatformApplicationAttributes.html)提供 **API 密钥**或**令牌**。您可以从 [Firebase 应用程序控制台](https://firebase.google.com/?gad=1&gclid=CjwKCAiA0syqBhBxEiwAeNx9N27M7zxHjlS74_gp4mAS4QTMQH5J35sTO29od-yauuq259zzX_I2DRoCrbsQAvD_BwE&gclsrc=aw.ds)获取以下信息：

**API 密钥**  
API 密钥是调用 Firebase 的旧版 API 时使用的凭证。谷歌 APIs 将于2024年6月20日移除FCM Legacy。如果您当前使用 API 密钥作为平台凭证，则可以通过选择**令牌**作为选项并上传您的 Firebase 应用程序的关联 JSON 文件来更新平台凭证。

**令牌**  
在调用 HTTP v1 API 时，会使用有效期很短的访问令牌。这是 Firebase 的建议用于发送推送通知的 API。为了生成访问令牌，Firebase 以私有密钥文件（也称为 service.json 文件）的形式为开发人员提供了一组凭证。

## 先决条件
<a name="sns-fcm-authentication-prerequisite"></a>

您必须先获取 FCM service.json 凭证，然后才能开始在 Amazon SNS 中管理 FCM 设置。要获取您的 service.json 凭据，请参阅谷歌 Firebase 文档中的[从旧版 FCM 迁移 APIs 到 HTTP v1](https://firebase.google.com/docs/cloud-messaging/migrate-v1)。

## 使用 CLI 管理 FCM 设置
<a name="sns-fcm-authentication-api"></a>

您可以使用 AWS API 创建 FCM 推送通知。一个 AWS 账户中 Amazon SNS 资源的数量和大小是有限的。有关更多信息，请参阅《AWS 一般参考 Guide》**中的 [Amazon Simple Notification Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html)。

**创建 FCM 推送通知以及亚马逊 SNS 主题AWS (API)**  
使用**密钥**凭证时，`PlatformCredential` 为 `API key`。使用**令牌**凭证时，`PlatformCredential` 为一个采用 JSON 格式的私有密钥文件：
+ [https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html](https://docs.aws.amazon.com/sns/latest/api/API_CreatePlatformApplication.html)

**检索现有亚马逊 SNS 主题 (API) 的 FCM 凭证类型AWS**  
检索凭证类型 `"AuthenticationMethod": "Token"` 或 ` "AuthenticationMethod": "Key"`：
+ [GetPlatformApplicationAttributes](https://docs.aws.amazon.com/sns/latest/api/API_GetPlatformApplicationAttributes.html)

**为现有亚马逊 SNS 主题AWS (API) 设置 FCM 属性**  
设置 FCM 属性：
+ [SetPlatformApplicationAttributes](https://docs.aws.amazon.com/sns/latest/api/API_SetPlatformApplicationAttributes.html)

## 使用控制台管理 FCM 设置
<a name="sns-fcm-authentication-cli"></a>

您可以使用 AWS Command Line Interface (CLI) 创建 FCM 推送通知。一个 AWS 账户中 Amazon SNS 资源的数量和大小是有限的。有关更多信息，请参阅 [Amazon Simple Notification Service endpoints and quotas](https://docs.aws.amazon.com/general/latest/gr/sns.html)。

**与 Amazon SNS 主题一起创建 FCM 推送通知（AWS CLI）**  
使用**密钥**凭证时，`PlatformCredential` 为 `API key`。使用**令牌**凭证时，`PlatformCredential` 为一个采用 JSON 格式的私有密钥文件。使用 AWS CLI 时，文件必须为字符串格式，并且必须忽略特殊字符。为了正确格式化文件，Amazon SNS 建议使用以下命令：`SERVICE_JSON=`jq @json <<< cat service.json``：
+ [create-platform-application](https://docs.aws.amazon.com/cli/latest/reference/sns/create-platform-application.html)

**检索现有 Amazon SNS 主题的 FCM 凭证类型（AWS CLI）**  
检索凭证类型 `"AuthenticationMethod": "Token"` 或 ` "AuthenticationMethod": "Key"`：
+ [get-platform-application-attributes](https://docs.aws.amazon.com/cli/latest/reference/sns/get-platform-application-attributes.html)

**为现有 Amazon SNS 主题设置 FCM 属性（AWS CLI）**  
设置 FCM 属性：
+ [set-platform-application-attributes](https://docs.aws.amazon.com/cli/latest/reference/sns/set-platform-application-attributes.html)

## 管理 FCM 设置（控制台）
<a name="sns-fcm-authentication-console"></a>

按照以下步骤在 Amazon SNS 中输入和管理您的 Firebase Cloud Messaging（FCM）凭证。

1. 登录 [Amazon SNS 控制台](https://console.aws.amazon.com/sns/home)。

1. 在导航窗格中，选择**推送通知**。

1. 在**平台应用程序**部分，选择要编辑其凭证的 **FCM 平台应用程序**，然后选择**编辑**。

1. 在 **Firebase Cloud Messaging 凭证**部分，选择以下选项之一：
   + **基于令牌的身份验证**（推荐方法）：上传您从 Firebase 控制台下载的**私钥文件**（JSON）。此文件包含用于生成发送 FCM 通知所需的短期访问令牌的凭证。要获取此文件，请执行以下操作：

     1. 前往您的 [Firebase 应用程序控制台](https://firebase.google.com/?gad=1&gclid=CjwKCAiA0syqBhBxEiwAeNx9N27M7zxHjlS74_gp4mAS4QTMQH5J35sTO29od-yauuq259zzX_I2DRoCrbsQAvD_BwE&gclsrc=aw.ds)。

     1. 在**项目设置**中，选择**云消息传递**。

     1. 下载**私钥** JSON 文件（用于基于令牌的身份验证方法）。
   + **API 密钥身份验证** – 如果您更喜欢使用较旧的 API 密钥身份验证方法，请在提供的字段中输入 **Google API 密钥**。要获取此文件，请执行以下操作：

     1. 前往您的 [Firebase 应用程序控制台](https://firebase.google.com/?gad=1&gclid=CjwKCAiA0syqBhBxEiwAeNx9N27M7zxHjlS74_gp4mAS4QTMQH5J35sTO29od-yauuq259zzX_I2DRoCrbsQAvD_BwE&gclsrc=aw.ds)。

     1. 在**项目设置**中，选择**云消息传递**。

     1. 复制用于发送通知的**服务器密钥**（API 密钥）。

1. 完成后，选择**保存更改**。

**相关主题**
+ [在 Amazon SNS 中使用 Google Firebase Cloud Messaging v1 有效载荷](sns-fcm-v1-payloads.md)