Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Firebase管理REST APIは、プロジェクトのFirebase資源とFirebaseアプリを含むFirebaseプロジェクトのプログラムのセットアップと管理を、可能にします。

この概要では、既存のFirebaseリソースとアプリケーションを追加するための一般的なワークフローを説明Googleクラウドプロジェクト現在Firebaseサービスを使用していません。

必要に応じて、このページの特定のセクションにジャンプできます。

このページ上の任意のステップを実行する前に、必ずことを確認APIを有効にします

Firebase管理APIのアクセス管理の詳細については、訪問クラウドアイデンティティアクセス管理(IAM)APIドキュメントを

あなたが始める前に

始める前に、あなたがする必要があります管理APIを有効にGoogleのクラウドプロジェクトのためにとあなたのアクセストークンを生成します

GoogleCloudプロジェクトの管理RESTAPIを有効にします

あなたがまだの場合は、有効にする必要がありますFirebase管理APIをお使いのGoogleクラウドプロジェクトで使用するため。

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

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

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

Googleクラウド環境ではない場合、最初に設定し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 。この呼び出しの要求本文は空である必要があります。

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

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するFirebaseサービスを追加またはアプリケーションを追加プロジェクトに。

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

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

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

リクエスト

コール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関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、呼び出すことができoperations.getの値まで操作上のdoneありtrue 、そのresponse型であるFirebaseProject 。操作が失敗した場合は、そのerrorに設定されている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"
    }
  }
}

以来doneありtrueresponseタイプがあるFirebaseProject 、Googleクラウドプロジェクトは現在、Firebaseサービスを提供しています。応答には、新しく作成されたについての他の有用な情報が含まれていFirebaseProjectそのような、 projectNumberとそのデフォルトresourcesOperation自動的に完了した後に削除されます。

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

多くの異なるアプリケーションを使用することができますFirebaseProject iOS版、Androidの、およびWebアプリケーションを含め、。このセクションでは、既存のにFirebaseアプリを追加する方法を学びますFirebaseProjectプログラムで。あなたもで既存のFirebaseプロジェクトにFirebaseアプリを追加することもできますFirebaseコンソール

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

あなたは、既存のFirebaseのプロジェクトにFirebase Androidのアプリケーションを追加することができます。

リクエスト

コールprojects.androidApps.create 。リクエスト本文を作成する方法は次のとおりです。

  • 必須:

    • packageName :それはGoogleのPlayデベロッパーコンソールに表示されるようAndroidアプリの標準的なパッケージ名。
  • オプションですが、推奨されます:

    • displayName :アプリのユーザーが割り当てられた表示名。この値は、後に自分のアプリを見つけるために有用であるFirebaseコンソール

この例のリクエスト本文では、我々は使いますpackageNamedisplayName

{
  "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関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、呼び出すことができoperations.getの値まで操作上のdoneありtrue 、そのresponse型であるAndroidApp 。操作が失敗した場合は、そのerrorに設定されている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"
  }
}

以来doneありtrueresponseタイプがあるAndroidAppFirebaseProject今持っているAndroidApp 。応答には、ユニークなFirebaseのように、新しく作成したFirebaseのAndroidアプリに関するその他の有用な情報が含まれていappIdOperation自動的に完了した後に削除されます。

SHA証明書を追加する

あなたは呼び出すことにより、既存のFirebaseのAndroidアプリケーションにSHA証明書を追加することができprojects.androidApps.sha.create 。このメソッド呼び出しのためのリクエストボディは空持っている必要がありますnameフィールドを。この呼び出しの結果は、新たに作成されたインスタンスであるShaCertificate

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

./gradlew signingReport

詳細については、訪問のAndroidは、GoogleのAPIを

既存リンクできるGoogle Analyticsアカウントを既存のにFirebaseProject 、プログラム。あなたもでGoogleアナリティクスに既存のFirebaseプロジェクトをリンクすることもできますIntegrationsのあなたのプロジェクト設定のタブ。

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

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

  • 既存の指定analyticsPropertyIdあなたFirebaseプロジェクトでGoogleアナリティクスのプロパティを関連付けるために。

あなたはあなたの両方見つけることができますanalyticsAccountIdと既存analyticsPropertyId上のGoogleアナリティクスのウェブサイトを

あなたは呼び出すとprojects.addGoogleAnalytics

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

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

Googleアナリティクスの階層構造の詳細情報は、内のアカウント解析のドキュメント

リクエスト

コールprojects.addGoogleAnalytics

私たちの例コールのリクエストボディでproject.addGoogleAnalytics 、私たちは、Googleアナリティクスのアカウントを指定しますanalyticsAccountId 。この呼び出しの意志条項新しいGoogleアナリティクスのプロパティと関連付けると、新しいプロパティFirebaseProject

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

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

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関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、呼び出すことができoperations.getの値まで操作上のdoneありtrueresponseタイプであるanalyticsDetails 。操作が失敗した場合は、そのerrorに設定されている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真であるとresponseタイプがあるanalyticsDetailsFirebaseProject今、指定されたGoogle Analyticsアカウントにリンクされています。 Operation自動的に完了した後に削除されます。

プロジェクトのデフォルトの場所を確定します(オプション)

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

この場所を設定する前に、チェックアウトするプロジェクトの選択場所のプロジェクトのための最適な場所については、を。また、呼び出す必要がありprojects.availableLocationsあなたのプロジェクトは、Googleクラウド組織の一部である場合、その後、あなたのためにあなたのプロジェクトのための有効な場所のリストを返すために、組織のポリシーがどの場所制限される場合がありますあなたのプロジェクトのために有効です。

この呼び出しdefaultLocation.finalize持つのApp Engineアプリケーションメソッドを作成し、デフォルトのクラウドストレージバケットに位置locationIdあなたがリクエストボディに提供していることは。

場合は、デフォルトのGCPのリソースの場所がすでに指定されている可能性がありProjectすでにApp Engineのアプリケーションを持っているか、またはこのdefaultLocation.finalize方法は、以前と呼ばれていました。

リクエスト

コールprojects.defaultLocation.finalize 。リクエスト本文を作成する方法は次のとおりです。

  • 必須:

    • locationId :あなたのデータはクラウドFirestoreまたはクラウドストレージなどの場所の設定を必要と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関連のエンドポイントを呼び出す前に、操作が成功している必要があります。

操作が成功したかどうかを確認するには、呼び出すことができoperations.getの値まで操作上のdoneありtrue 、そのresponse型であるgoogle.protobuf.Empty 。操作が失敗した場合、レスポンスボディのerror型になりますgoogle.rpc.StatusOperation自動的に完了した後に削除されます。