> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Android Firebase 認証情報

> OneSignalでFirebase Cloud Messaging（FCM）Service Account認証情報を構成し、Google Play StoreのアプリにAndroidプッシュ通知を有効にします。

Google Play StoreでAndroidアプリをダウンロードしたユーザーにプッシュ通知を送信するには、Firebase Cloud Messaging（FCM）Service Account秘密鍵を作成してOneSignalにアップロードする必要があります。

<Note>
  この手順は以下には適用されません：

  * **Web Push。** AndroidデバイスはFCM Service Accountなしでウェブサイトやプログレッシブウェブアプリを購読できます。[Web pushセットアップ](./web-push-setup)を参照してください。
  * **Huawei App Gallery経由で配布されるHuaweiアプリ。** [Huawei認証](./authorize-onesignal-to-send-huawei-push)を参照してください。
</Note>

***

## 要件

* Google Play Store経由で配布されるAndroidアプリ
* [OneSignalアカウント](https://onesignal.com)
* [Firebaseアカウント（無料）](https://firebase.google.com)
* `cloudmessaging.messages.create`および`firebase.projects.get`権限を持つFirebase Service Account秘密鍵
  * 持っていない場合は、以下の手順に従って[Firebase Service Account秘密鍵を作成](#create-a-firebase-service-account-private-key)してください
  * すでに秘密鍵がある場合は、[既存の権限を確認](#how-do-i-check-my-service-account-permissions)してください

***

<h2 id="create-a-firebase-service-account-private-key">
  Firebase Service Account秘密鍵を作成する \\
</h2>

<Steps>
  <Step title="Firebaseプロジェクトを作成または開く">
    [Firebaseコンソール](https://console.firebase.google.com/)に移動し、プロジェクトを作成または選択します。

    <Frame caption="Firebase内のプロジェクトページ">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/firebase-projects.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=aca8614ec0e40fc63fd71f3160098778" alt="Firebaseコンソールに利用可能なプロジェクトのリストが表示されている" width="2656" height="1780" data-path="images/mobile/firebase-projects.png" />
    </Frame>
  </Step>

  <Step title="Firebase Cloud Messaging API V1を有効にする">
    **プロジェクト設定**で**Cloud Messaging**タブを選択します。

    <Frame caption="FirebaseプロジェクトのCloud Messagingタブ">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/firebase-project-settings-cloud-messaging.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=e877c1d0ca51b85b1f2e80418e0195c4" alt="Firebase Project settingsのCloud Messagingタブ。Firebase Cloud Messaging API (V1)のステータスはEnabled" width="2956" height="1140" data-path="images/mobile/firebase-project-settings-cloud-messaging.png" />
    </Frame>

    \*\*Firebase Cloud Messaging API (V1)\*\*のステータスを確認します：

    * **Enabled**（緑のチェックマーク）と表示されている場合は、次のステップに進みます。
    * **Disabled**と表示されている場合は、**3点メニュー > Manage API in Google Cloud Console**をクリックします。Google Cloud Consoleで**Enable**をクリックし、緑のチェックマークと「API Enabled」が表示されるまで待ちます。

    <Frame caption="Google Cloud ConsoleでEnabled状態のFirebase Cloud Messaging API">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/firebase-cloud-messaging-api-v1-enabled.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=9239c8baa0659152d8aed6fc6af810a7" alt="Google Cloud ConsoleのFirebase Cloud Messaging APIページに、緑のチェックマーク付きのAPI Enabled状態が表示されている" width="1616" height="750" data-path="images/mobile/firebase-cloud-messaging-api-v1-enabled.png" />
    </Frame>

    <Note>
      ここで、Firebase Service Accountに必要な権限があるかを確認するのに良いタイミングです：

      * `cloudmessaging.messages.create`
      * `firebase.projects.get`

      新しく作成されたFirebaseプロジェクトでは、通常、デフォルトのService Accountにこれらの権限が付与されています。確信が持てない場合や古いプロジェクトで作業する場合は、続行する前に確認してください。詳細は[Service Accountの権限を確認するには？](#how-do-i-check-my-service-account-permissions)を参照してください。
    </Note>
  </Step>

  <Step title="新しい秘密鍵を生成する">
    **Project settings**に戻り、**Service accounts**タブを選択して、**Generate new private key**をクリックします。

    <Frame caption="Firebase内のService Accountsセクション">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/firebase-project-settings-service-accounts.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=d0b4a6d7c84cd1a639b6de79c3789363" alt="Firebase Project settingsのService accountsタブにGenerate new private keyボタンが表示されている" width="2978" height="1734" data-path="images/mobile/firebase-project-settings-service-accounts.png" />
    </Frame>

    ポップアップで**Generate key**をクリックして確認します。

    <Frame caption="Service Accountの秘密鍵を生成。">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/firebase-generate-new-private-key.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=6b3ca4145c180400cf80a434adbbc216" alt="Service Accountの新しい秘密鍵生成のためのFirebaseの確認ダイアログ" width="1432" height="572" data-path="images/mobile/firebase-generate-new-private-key.png" />
    </Frame>

    <Warning>
      ダウンロードした秘密鍵には機密の認証情報が含まれています。共有したり、バージョン管理にチェックインしたりしないでください。
    </Warning>

    `.json`ファイルを安全な場所に保存します。次のセクションで必要になります。
  </Step>
</Steps>

***

## Service Account秘密鍵をOneSignalにアップロード

OneSignalダッシュボードで：

<Steps>
  <Step title="Android設定を開く">
    \*\*Settings > Push & In-App > Platforms > Google Android (FCM)\*\*に移動します。

    **Activate**（初回セットアップ）または**Settings**（Androidが既に構成されている場合）をクリックします。

    <Frame caption="OneSignalアプリ設定内のプラットフォーム画面">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/onesignal-push-platforms.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=9b8af64aae3dd5fdcb715731710785ca" alt="OneSignalのPush & In-App Settingsで、Platformsタブにて、Google Android (FCM)タイルとSettingsボタンが表示されている" width="2496" height="648" data-path="images/mobile/onesignal-push-platforms.png" />
    </Frame>
  </Step>

  <Step title="Service Account秘密鍵をアップロード">
    **Select file**をクリックし、前のセクションで保存した`.json`秘密鍵を選択します。

    <Frame caption="FCM構成画面">
      <img src="https://mintcdn.com/onesignal/uWz0BIZj_JUi1RGq/images/mobile/onesignal-fcm-configuration.png?fit=max&auto=format&n=uWz0BIZj_JUi1RGq&q=85&s=5fb6b977bf1517c453b1c0b0c9b57274" alt="OneSignal Google Android (FCM)構成画面、Service Account JSONファイルアップロードフィールドとSelect fileボタン付き" width="1780" height="702" data-path="images/mobile/onesignal-fcm-configuration.png" />
    </Frame>
  </Step>

  <Step title="保存して続行">
    **Save & Continue**をクリックします。OneSignalが秘密鍵を検証し、SDKを選択するセットアップフローの次のステップに移動します。

    <Warning>
      ダッシュボードに**Invalid request**または他のエラーが表示される場合、Service Accountに1つ以上の必須ロールが不足している可能性があります。[Service Accountの権限を確認するには？](#how-do-i-check-my-service-account-permissions)を参照してください。
    </Warning>
  </Step>
</Steps>

<Check>
  OneSignalアプリがFirebase Cloud Messaging (V1)に接続されました。次に、お使いのSDKに応じて[モバイルSDKセットアップ](./mobile-sdk-setup)に従い、アプリにOneSignalをインストールして初期化してください。
</Check>

***

## FAQ

<h3 id="how-do-i-check-my-service-account-permissions">
  Service Accountの権限を確認するには？ \\
</h3>

Service Accountの権限は、Firebaseコンソールではなく、**Google Cloud Console**で管理されます。OneSignalにアップロードした秘密鍵に対応するService Accountは、以下の両方を持つ必要があります：

* `cloudmessaging.messages.create` — **Firebase Cloud Messaging API Admin**（`roles/firebasecloudmessaging.admin`）によって付与されます。
* `firebase.projects.get` — **Firebase Viewer**（`roles/firebase.viewer`）によって付与されます。

**Firebase Admin**（`roles/firebase.admin`）、**Editor**、**Owner**などのより広範なロールも、両方の権限を含むため、要件を満たします。OneSignal専用のService Accountの場合は、秘密鍵が露出した際の影響を限定するため、上記の狭いペアを優先することをお勧めします。

Service Account秘密鍵をアップロードした後にOneSignalダッシュボードに**Invalid request**が表示される場合、ロールの不足が最も一般的な原因です。

<Steps>
  <Step title="Google Cloud ConsoleでIAMを開く">
    [Google Cloud Console](https://console.cloud.google.com/)にサインインし、Firebaseアプリに関連付けられたプロジェクトを選択し、**IAM and Admin > IAM**に移動します。
  </Step>

  <Step title="Service Accountを見つける">
    プリンシパルのメールアドレスを、アップロードした秘密鍵の`client_email`フィールドと一致させます。
  </Step>

  <Step title="不足しているロールを追加する">
    鉛筆（編集）アイコンをクリックし、**Add another role**をクリックして、まだ割り当てられていないロールを追加します。
  </Step>

  <Step title="保存">
    **Save**をクリックします。IAMの変更が反映されるまで数分かかる場合があります。
  </Step>
</Steps>

### 「This configuration is for a different Firebase Project」と表示されるのはなぜですか？

このエラーは、アップロードした秘密鍵が別のFirebaseプロジェクト（別のSender ID）に属している場合に発生します。

**解決策**：元のFirebaseプロジェクトの秘密鍵を使用してください。利用できない場合は、App IDを添えて`support@onesignal.com`に連絡してください。プロジェクトを切り替えるとプッシュトークンがリセットされます。ユーザーは再度プッシュを受信するためにアプリを再度開く必要があります。

### Sender IDを変更できますか？

はい、ただし既存のユーザーに影響します。

デバイストークンは元のSender IDに紐付いています。変更すると既存のトークンが無効になります。

<Warning>
  ユーザーがアプリを再度開いて新しいトークンを生成するまで、プッシュ通知を受信できなくなります。
</Warning>

サポートが必要な場合は、App IDを添えて`support@onesignal.com`に連絡してください。

### OneSignalでSender IDが表示されないのはなぜですか？

Firebaseサーバーキーが`AIz...`のように見える場合、古いGoogle Cloud Messaging（GCM）設定を使用している可能性があります。新しいFirebaseプロジェクトを作成し、Service Account秘密鍵をアップロードしてください。

### FCM V1に切り替えるときにコードを更新する必要がありますか？

アプリやSDKの変更は必要ありません。これはダッシュボードのみの更新です。

### FCM V1への切り替え期限はいつですか？

Googleのレガシー FCM APIは現在完全に廃止されました。まだレガシーAPIを使用している場合は、**直ちにFCM V1に移行してください**。

### どのアプリがまだレガシーAPIを使用しているか確認するには？

各アプリに対して[View an app](/reference/view-an-app) APIを呼び出し、レスポンスの`fcm_v1_service_account_json`フィールドを確認します：

* **存在し空でない**：アプリはFCM V1を使用しています。
* **存在しないか空**：アプリはFCM V1用に構成されていません。そのアプリがAndroidプッシュを送信している場合、まだレガシーAPIを使用しているため、移行が必要です。

最初にアプリとそのApp IDを一覧表示するには、[View apps](/reference/view-apps) APIを使用してください。

<h3 id="what-is-firebase-cloud-messaging-and-why-does-onesignal-need-a-service-account-private-key">
  Firebase Cloud Messagingとは何ですか？なぜOneSignalにはService Account秘密鍵が必要ですか？ \\
</h3>

**Firebase Cloud Messaging（FCM）**は、Androidデバイスにプッシュ通知を配信するGoogleのサービスです。**Service Account**は、OneSignalがFirebaseプロジェクトに認証するために使用するGoogleアイデンティティで、その**秘密鍵**は、そのアイデンティティを証明するJSONファイルです。秘密鍵をアップロードすると、OneSignalがあなたに代わってFirebase経由でプッシュを送信することを許可します。詳細は、[GoogleのService Accountドキュメント](https://cloud.google.com/iam/docs/service-account-overview)を参照してください。

***

## 関連ページ

<Columns cols={2}>
  <Card title="モバイルSDKセットアップ" icon="mobile-screen" href="./mobile-sdk-setup">
    AndroidアプリにOneSignal SDKをインストールして初期化します。
  </Card>

  <Card title="モバイルプッシュセットアップ" icon="bell" href="./mobile-push-setup">
    Android、iOS、その他のモバイルプラットフォーム向けのプラットフォーム固有のセットアップ手順。
  </Card>

  <Card title="Huaweiプッシュセットアップ" icon="mobile" href="./authorize-onesignal-to-send-huawei-push">
    Huawei App Gallery経由で配布されるHuaweiアプリへのOneSignalのプッシュ送信を承認します。
  </Card>

  <Card title="Web pushセットアップ" icon="globe" href="./web-push-setup">
    ウェブサイトのプッシュ通知を構成します。
  </Card>
</Columns>
