# Firebase Cloud Messagingのサービスアカウントを設定する

KARTE のプッシュ通知では、バックエンドに Firebase Cloud Messaging (以下FCM) を使用しています。

プッシュ通知の利用には、以下3点の設定が必要です。

* FCM API
* FirebaseプロジェクトID（またはFCM サーバーキー）
* Firebaseサービスアカウント秘密鍵

{% hint style="warning" %}
**複数のFirebaseプロジェクトの利用に関して**

KARTEの管理画面では一つのFirebaseプロジェクトの情報しか登録することができません。\
複数のFirebaseプロジェクトの情報を紐付けることはできませんのであらかじめご了承ください。
{% endhint %}

また、KARTE から FCM にリクエストを送信できるようにするために、KARTE の管理画面上からサービスアカウントの設定も必要です。

下記に沿って設定ください。

## 1. FCM APIの設定

FCM APIの`FCM HTTP v1 API` を選択します。

{% hint style="info" %}
**事前に API の有効化が必要です**

FCM HTTP v1 API を利用する場合、事前に `Firebase Cloud Messaging API` を有効化する必要があります。

有効化は `Google Developer Console` で行います。\
<https://console.developers.google.com/apis/api/fcm.googleapis.com/overview>
{% endhint %}

KARTEではv`FCM HTTP v1 API`による送信をサポートしています。

**`FCM HTTP v1 API`利用の場合は、FirebaseプロジェクトIDを設定します**

* Firebase コンソール画面の\[プロジェクトの設定] > \[全般] で `プロジェクトID` を確認します。

![karte-tracker-sample – 設定 – Firebase console](/files/6CUqvFphAVLI5nheiwsL)

* KARTE管理画面の「FirebaseプロジェクトID」に、上記で取得した `プロジェクトID` を設定します。

## 2. Firebaseサービスアカウントの設定

### Firebaseサービスアカウントの作成

1. Google Cloud で、該当のプロジェクトを選択後に、\[サービスアカウント] ページで \[サービスアカウントを作成] を選択

   ![](/files/6gGTAi2kjlbC0xm8wd37)
2. サービスアカウント名、ID、説明を任意の内容で入力して、\[作成して続行] を選択

   ![](/files/jo7sSlIJGQ7Ajkk2YODz)
3. \[ロールを選択] フィールドで、ロールのリストから \[Firebase Cloud Messaging API 管理者] を選択して、\[完了] を選択

   ![](/files/Ry2DRjqDsJ2HMdc1bP8W)

   1. アクセスをより制限する場合は、`cloudmessaging.messages.create` 権限を持つカスタムロールを作成して、それをリストから選択
   2. 作成したサービスアカウントの権限を確認するには、該当のプロジェクトを選択後に、\[IAM] を選択

      ![](/files/qVVcElj8sTQJ0zTDRBo3)

### Firebaseサービスアカウント秘密鍵の生成

1. Google Cloud で、該当のプロジェクトを選択後に、\[サービスアカウント] ページで、上記で作成したサービスアカウントの \[：] > \[鍵を管理] を選択

   ![](/files/VTUe6emgDDjricSnf0pq)
2. \[キーを追加] > \[新しい鍵を作成] を選択

   ![](/files/rbYsRvqFQ3UDrqiDpfWv)
3. \[JSON] を選択して、\[作成] を選択

   ![](/files/OUVKZwqTiml2riwF6plx)

### Firebaseサービスアカウント秘密鍵のアップロード

KARTE の管理画面のグローバルメニュー\[すべてのプロダクト] > \[ストア] > \[アプリ設定] > \[KARTE for App] を開き、\[Firebaseサービスアカウント秘密鍵] に、上記で生成した`秘密鍵`をアップロード

![](/files/divGuXraJeLciT33R5N3)

完了したら、 `保存` ボタンをクリックして設定は完了です。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://app.developers.karte.io/app-send-notification/app-setup-service-account.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
