Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Management RESTAPIを使用してFirebaseプロジェクトを設定および管理する

Firebase Management REST API を使用すると、プロジェクトの Firebase リソースや Firebase アプリなど、Firebase プロジェクトのプログラムによるセットアップと管理が可能になります。

この概要では、Firebase サービスを現在使用していない既存のGoogle Cloud プロジェクトにFirebase リソースとアプリを追加する一般的なワークフローについて説明します。

このページの特定のセクションに移動するには、次のことを行います。

このページの手順を実行する前に、API有効にしてください。

Firebase Management APIのアクセス管理については、 Cloud Identity Access Management(IAM)APIのドキュメントをご覧ください。

あなたが始める前に

開始する前に、GCP プロジェクトのManagement API有効にして、アクセス トークン生成する必要があります

Google Cloud プロジェクトの管理 REST API を有効にする

まだ行っていない場合は、 GoogleCloudプロジェクトで使用するためにFirebaseManagementAPIを有効にする必要があります。

  1. GoogleAPIコンソールでFirebaseManagementAPIページを開きます。
  2. プロンプトが表示されたら、Google Cloud プロジェクトを選択します。
  3. Firebase Management API ページで [有効にする] をクリックします。

API アクセス トークンを生成する

アクセストークンを取得するNode.jsの例を次に示します。

まず、 GOOGLE_APPLICATION_CREDENTIALS環境にいない場合は、 GOOGLE_APPLICATION_CREDENTIALS環境変数をサービス アカウント キーへのパスに設定します。

Linux または macOS

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json"

ウィンドウズ

PowerShellの場合:

$env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"

次に、Firebase Admin SDK を使用して、サービス アカウントの認証情報からアクセス トークンを取得します。

const admin = require('firebase-admin');

function getAccessToken() {
  return admin.credential.applicationDefault().getAccessToken()
      .then(accessToken => {
        return accessToken.access_token;
      })
      .catch(err => {
        console.error('Unable to get access token');
        console.error(err);
      });
}

プロジェクトのリソース名を見つけます

Firebaseサービスの追加に利用できるGoogleCloudプロジェクトを見つけることができます。

リクエスト

availableProjects.list呼び出しavailableProjects.list 。この呼び出しの要求本文は空である必要があります。

利用可能な Google Cloud プロジェクトのリストをリクエストする Node.js の例を次に示します。

const fetch = require('node-fetch');

async function listProjects() {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/availableProjects';
  const options = {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    const projects = resp['projectInfo'];
    console.log('Project total: ' + projects.length);
    console.log('');
    for (let i in projects) {
      const project = projects[i];
      console.log('Project ' + i);
      console.log('ID: ' + project['project']);
      console.log('Display Name: ' + project['displayName']);
      console.log('');
    }
  } catch(err) {
    console.error(err);
  }
}

結果

availableProjects.list呼び出しからの応答本文には、 ProjectInfoオブジェクトのリストが含まれています。プロジェクトのリストが長すぎる場合、応答本文には、プロジェクトの次のページを取得するためのクエリパラメーターとして使用できるnextPageTokenも含まれます。

availableProjects.list呼び出しの応答本文の例を次に示します。

{
  "projectInfo": [
    {
      "project": "projects/first-cloud-project",
      "displayName": "First Cloud Project"
    },
    {
      "project": "projects/second-cloud-project",
      "displayName": "Second Cloud Project"
    }
  ]
}

この応答例には、Firebaseサービスを追加できる2つのGoogleCloudプロジェクトがあります。 projectフィールドは、 projectのグローバルに一意のリソース名を提供することに注意してください。

availableProjects.listからの応答にリストされているproject値をavailableProjects.listして、Firebaseサービス追加したり、プロジェクトにアプリ追加したりできます

次のセクションでは、 projects/first-gcp-projectリソース名を使用して、Firebase サービスをFirst Cloud Project追加します。

プロジェクトに Firebase サービスを追加する

Google Cloudプロジェクトは、Firebaseが提供するサービスを利用できます。このセクションでは、Firebaseサービスを既存のGoogleCloudプロジェクトにプログラムで追加する方法を学習します。 Firebase コンソールで、既存の Google Cloud プロジェクトに Firebase サービスを追加することもできます。

リクエスト

projects.addFirebase呼び出しprojects.addFirebase 。この呼び出しの要求本文は空である必要があります。

Node.jsがFirebaseサービスをGoogleCloudプロジェクトに追加する例を次に示します。

const fetch = require('node-fetch');

async function addFirebase(projectId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addFirebase';
  const options = {
    method: 'POST',
    // Use a manual access token here since explicit user access token is required.
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

結果

projects.addFirebase呼び出しの結果は、 Operationです。プロジェクトの他のFirebase関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、 doneの値がtrueなり、そのresponseのタイプがFirebaseProjectまで、 operations.getを呼び出すことができます。操作が失敗した場合、そのerrorgoogle.rpc.Status設定されgoogle.rpc.Status

これがoperations.get呼び出しの応答本文です。

{
  "name": "operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.FirebaseProject",
    "projectId": "first-cloud-project",
    "projectNumber": "...",
    "displayName": "First Cloud Project",
    "name": "projects/first-cloud-project",
    "resources": {
      "hostingSite": "first-cloud-project",
      "realtimeDatabaseInstance": "first-cloud-project"
    }
  }
}

donetrueで、 responseタイプがFirebaseProjectであるため、 FirebaseProjectプロジェクトにFirebaseサービスが追加されました。応答には、 projectNumberやデフォルトのresourcesなど、新しく作成したFirebaseProjectに関するその他の有用な情報も含まれています。 Operationは、完了後に自動的に削除されます。

プロジェクトに Firebase アプリを追加する

iOS、Android、ウェブアプリなど、さまざまなアプリでFirebaseProjectを使用できます。このセクションでは、Firebase アプリをプログラムで既存のFirebaseProjectに追加する方法を学習します。 Firebase コンソールで既存の Firebase プロジェクトに Firebase アプリを追加することもできます。

Firebaseプロジェクトに追加するFirebaseアプリの種類を選択します。

Firebase Android アプリを既存の Firebase プロジェクトに追加できます。

リクエスト

projects.androidApps.create呼び出しprojects.androidApps.create 。リクエスト本文を作成する方法は次のとおりです。

  • 必須:

    • packageName :GooglePlayデベロッパーコンソールに表示されるAndroidアプリの正規のパッケージ名。
  • オプションですが、推奨されます:

    • displayName : ユーザーが割り当てたアプリの表示名。この値は、後でFirebase コンソールでアプリを見つけるのに役立ちます。

この例のリクエスト本文では、 packageNamedisplayName使用しdisplayName

{
  "displayName": "My Firebase Android App"
  "packageName": "com.firebase.android"
}

Node.jsがFirebaseAndroidアプリをFirebaseプロジェクトに追加する例を次に示します。

const fetch = require('node-fetch');

async function addAndroidApp(projectId, displayName, packageName) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/androidApps';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'displayName': displayName,
      'packageName': packageName
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

結果

projects.androidApps.create呼び出しの結果は、 Operationです。プロジェクトの他の Firebase 関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、 doneの値がtrueなり、そのresponseのタイプがAndroidAppまで、 operations.getに対してoperations.getを呼び出すことができます。操作が失敗した場合、そのerrorgoogle.rpc.Status設定されgoogle.rpc.Status

これがoperations.get呼び出しの応答本文です。

{
  "name": "operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.AndroidApp",
    "name": "projects/first-cloud-project/androidApps/...",
    "appId": "...",
    "displayName": "My Firebase Android App",
    "projectId": "first-cloud-project",
    "packageName": "com.firebase.android"
  }
}

donetrueあり、 responseタイプはAndroidAppであるため、 FirebaseProjectにはAndroidApp 。応答には、一意のFirebase appIdなど、新しく作成したFirebaseAndroidアプリに関するその他の有用な情報も含まれています。 Operationは、完了後に自動的に削除されます。

SHA証明書を追加

projects.androidApps.sha.createを呼び出すことで、既存の Firebase Android アプリに SHA 証明書を追加できprojects.androidApps.sha.create 。このメソッド呼び出しのリクエスト本文には、空のnameフィールドが必要です。この呼び出しの結果は、新しく作成されたShaCertificateインスタンスです。

projects.androidApps.sha.create呼び出すときは、有効な SHA-1 または SHA-256 証明書ハッシュを提供する必要があります。 signingReportコマンドを使用して署名証明書のSHAハッシュを取得できます:

./gradlew signingReport

詳細については、Android 向け Google API をご覧ください

プログラムによって、既存のGoogle アナリティクス アカウントを既存のFirebaseProjectリンクできます。プロジェクト設定の[統合]タブで、既存のFirebaseプロジェクトをGoogleアナリティクスにリンクすることもできます。

呼び出しprojects.addGoogleAnalytics必要ですanalytics_resourceのいずれかになります、 analyticsAccountIdまたはanalyticsPropertyId

  • 既存のanalyticsAccountIdを指定して、指定されたアカウント内に新しい Google アナリティクス プロパティをプロビジョニングし、新しいプロパティを Firebase プロジェクトに関連付けます。

  • 既存のanalyticsPropertyIdを指定して、Google アナリティクス プロパティを Firebase プロジェクトに関連付けます。

analyticsAccountIdと既存のanalyticsPropertyId両方は、 Google AnalyticsWebサイトで見つけることができます。

projects.addGoogleAnalyticsを呼び出す場合:

  1. 既存のデータは、あなたの既存Firebase AppsにGoogleアナリティクスのプロパティの対応に流れた場合、最初のチェックが決定FirebaseProject (に基づいてpackageNameまたはbundleIdデータストリームに関連付けられています)。次に、必要に応じて、データ ストリームとアプリがリンクされます。この自動リンクは、AndroidアプリとiOSアプリにのみ適用されることに注意してください。

  2. Firebaseアプリに対応するデータストリームが見つからない場合は、各FirebaseアプリのGoogleアナリティクスプロパティで新しいデータストリームがプロビジョニングされます。以前にアナリティクス プロパティのデータ ストリームに関連付けられていた場合でも、新しいデータ ストリームは常に Web アプリ用にプロビジョニングされることに注意してください。

Google Analytics アカウントの階層と構造の詳細については、 Analytics のドキュメントをご覧ください。

リクエスト

projects.addGoogleAnalytics呼び出しprojects.addGoogleAnalytics

project.addGoogleAnalytics呼び出し例のリクエスト本文では、Google アナリティクス アカウントのanalyticsAccountId指定します。この呼び出しにより、新しい Google アナリティクス プロパティがプロビジョニングされ、新しいプロパティがFirebaseProject関連付けられます。

{
  "analyticsAccountId": "<your-google-analytics-account-id>"
}

Node.js が Firebase プロジェクトを Google アナリティクス アカウントにリンクする例を次に示します。

const fetch = require('node-fetch');

async function addGoogleAnalytics(projectId, analyticsAccountId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + ':addGoogleAnalytics';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'analyticsAccountId': analyticsAccountId
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

結果

projects.addGoogleAnalytics呼び出しの結果は、 Operationです。プロジェクトの他のFirebase関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、 doneの値がtrueなり、 responseのタイプがanalyticsDetailsまで、 operations.getで呼び出すことができます。操作が失敗した場合、そのerrorgoogle.rpc.Status設定されgoogle.rpc.Status

これがoperations.get呼び出しの応答本文です。

{
  "name": "operations/...",
  "none": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
    "analyticsProperty": [
      {
        "id": "...",
        "displayName": "..."
      }
    ],
    "streamMappings": [
      {
        "app": "...",
        "streamId": "...",
        "measurementId": "..."
      }
    ]
  }
}

doneが true で、 responseタイプがanalyticsDetailsであるため、 FirebaseProjectは指定された Google アナリティクス アカウントにリンクされています。 Operationは完了後に自動的に削除されます。

プロジェクトのデフォルトの場所を完成させる (オプション)

FirebaseプロジェクトでCloudFirestore、Cloud Storage、またはApp Engineアプリを使用する場合は、プロジェクトのデフォルトのGoogle Cloud Platform(GCP)リソースの場所をプログラムで確定できます。 Firebaseコンソールで場所を選択することもできることに注意してください。

この場所を設定する前に、プロジェクトに最適な場所について、プロジェクトの場所の選択を確認してください。プロジェクトが Google Cloud 組織の一部である場合、組織のポリシーによってプロジェクトで有効な場所制限される可能性があるため、 projects.availableLocationsを呼び出してprojects.availableLocationsの有効な場所のリストを返す必要もあります。

このdefaultLocation.finalizeメソッドを呼び出すと、リクエスト本文で指定したlocationIdあるデフォルトのCloudStorageバケットを使用してdefaultLocation.finalizeアプリケーションが作成されます。

ProjectすでにdefaultLocation.finalizeアプリケーションがある場合、またはこのdefaultLocation.finalizeメソッドが以前に呼び出された場合は、デフォルトのGCPリソースの場所がすでに指定されている可能性があります。

リクエスト

projects.defaultLocation.finalize呼び出しprojects.defaultLocation.finalize 。リクエスト本文を作成する方法は次のとおりです。

  • 必須:

    • locationId : Cloud Firestore や Cloud Storage など、場所の設定を必要とする GCP サービスのデータが保存される場所。
{
  "locationId": "us-west2"
}

以下は、プロジェクトのデフォルトの場所を確定するための Node.js の例です。

const fetch = require('node-fetch');

async function finalizeProjectLocation(projectId, locationId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/defaultLocation:finalize';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'locationId': locationId
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

結果

projects.defaultLocation.finalize呼び出しの結果は、 Operationです。プロジェクトの他のFirebase関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、 doneの値がtrueなり、そのresponseのタイプがgoogle.protobuf.Emptyまで、 operations.getに対してoperations.getを呼び出すことができます。操作が失敗した場合、応答本文のerrorgoogle.rpc.Statusタイプにgoogle.rpc.Statusます。 Operationは、完了後に自動的に削除されます。