Lihat yang baru dari Firebase di Google I/O 2022. Pelajari lebih lanjut

Siapkan dan kelola proyek Firebase menggunakan Management REST API

Firebase Management REST API memungkinkan penyiapan terprogram dan pengelolaan proyek Firebase, termasuk sumber daya Firebase proyek dan Aplikasi Firebase.

Ikhtisar ini menjelaskan alur kerja umum untuk menambahkan sumber daya dan aplikasi Firebase ke proyek Google Cloud yang ada yang saat ini tidak menggunakan layanan Firebase.

Anda dapat melompat ke bagian tertentu dari halaman ini jika Anda hanya ingin:

Sebelum mengikuti langkah apa pun di laman ini, pastikan Anda mengaktifkan API .

Untuk informasi tentang manajemen akses untuk Firebase Management API, kunjungi dokumentasi Cloud Identity Access Management (IAM) API .

Sebelum kamu memulai

Sebelum memulai, Anda harus mengaktifkan Management API untuk proyek Google Cloud Anda dan membuat token akses Anda .

Aktifkan Management REST API untuk proyek Google Cloud Anda

Jika Anda belum melakukannya, Anda harus mengaktifkan Firebase Management API untuk digunakan dengan proyek Google Cloud Anda.

  1. Buka halaman Firebase Management API di konsol Google API.
  2. Saat diminta, pilih proyek Google Cloud Anda.
  3. Klik Aktifkan di halaman Firebase Management API.

Hasilkan token akses API Anda

Berikut adalah contoh untuk Node.js yang mengambil token akses Anda.

Pertama, jika Anda tidak berada di lingkungan Google Cloud, setel variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur ke kunci akun layanan Anda.

Linux atau macOS

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

jendela

Dengan PowerShell:

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

Kemudian, gunakan Firebase Admin SDK untuk mendapatkan token akses dari kredensial akun layanan Anda:

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);
      });
}

Temukan nama sumber daya proyek Anda

Anda dapat menemukan proyek Google Cloud yang tersedia untuk menambahkan layanan Firebase.

MEMINTA

Hubungi availableProjects.list . Badan permintaan untuk panggilan ini harus kosong.

Berikut ini contoh Node.js untuk meminta daftar proyek Google Cloud yang tersedia:

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);
  }
}

HASIL

Isi respons dari panggilan ke availableProjects.list berisi daftar objek ProjectInfo . Jika daftar proyek terlalu panjang, badan respons juga berisi nextPageToken yang dapat Anda gunakan sebagai parameter kueri untuk mendapatkan halaman proyek berikutnya.

Berikut adalah contoh isi respons dari panggilan availableProjects.list :

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

Contoh respons ini memiliki dua proyek Google Cloud yang dapat menambahkan layanan Firebase ke dalamnya. Perhatikan bahwa bidang project menyediakan nama sumber daya yang unik secara global untuk suatu proyek.

Anda dapat menggunakan nilai project apa pun yang tercantum dalam respons dari availableProjects.list untuk menambahkan layanan Firebase atau menambahkan aplikasi ke proyek Anda.

Di bagian berikutnya, kita akan menambahkan layanan Firebase ke First Cloud Project menggunakan nama resource projects/first-gcp-project .

Tambahkan layanan Firebase ke proyek Anda

Proyek Google Cloud dapat memanfaatkan layanan yang ditawarkan oleh Firebase. Di bagian ini, Anda akan mempelajari cara menambahkan layanan Firebase ke proyek Google Cloud yang ada secara terprogram. Perhatikan bahwa Anda juga dapat menambahkan layanan Firebase ke proyek Google Cloud yang ada di Firebase console .

MEMINTA

Panggil projects.addFirebase . Badan permintaan untuk panggilan ini harus kosong.

Berikut ini contoh Node.js untuk menambahkan layanan Firebase ke proyek Google Cloud Anda:

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']);
  }
}

HASIL

Hasil dari panggilan ke projects.addFirebase adalah Operation . Sebelum Anda dapat memanggil endpoint terkait Firebase lainnya untuk proyek Anda, operasi harus berhasil.

Untuk memeriksa apakah operasi berhasil, Anda dapat memanggil operations.get pada operasi sampai nilai done true dan response bertipe FirebaseProject . Jika operasi gagal, error disetel ke google.rpc.Status .

Inilah badan respons dari panggilan 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"
    }
  }
}

Karena done adalah true dan jenis response adalah FirebaseProject , proyek Google Cloud sekarang memiliki layanan Firebase. Responsnya juga berisi informasi berguna lainnya tentang FirebaseProject yang baru Anda buat, seperti projectNumber dan resources defaultnya. Operation secara otomatis dihapus setelah selesai.

Tambahkan Aplikasi Firebase ke proyek Anda

Banyak aplikasi berbeda dapat menggunakan FirebaseProject , termasuk iOS, Android, dan aplikasi web. Di bagian ini, Anda akan mempelajari cara menambahkan Aplikasi Firebase ke FirebaseProject yang ada secara terprogram. Perhatikan bahwa Anda juga dapat menambahkan Aplikasi Firebase ke proyek Firebase yang ada di konsol Firebase .

Pilih jenis Aplikasi Firebase untuk ditambahkan ke proyek Firebase Anda.

Anda dapat menambahkan Aplikasi Android Firebase ke proyek Firebase yang ada.

MEMINTA

Panggil projects.androidApps.create . Berikut cara membuat badan permintaan Anda:

  • Diperlukan:

    • packageName : Nama paket kanonik aplikasi Android seperti yang akan muncul di konsol Pengembang Google Play.
  • Opsional, tetapi disarankan:

    • displayName : Nama tampilan aplikasi yang ditetapkan pengguna. Nilai ini berguna untuk menemukan aplikasi Anda nanti di Firebase console .

Di badan permintaan untuk contoh kita, kita akan menggunakan packageName dan displayName :

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

Berikut ini contoh Node.js untuk menambahkan Aplikasi Android Firebase ke proyek Firebase Anda:

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']);
  }
}

HASIL

Hasil dari panggilan ke projects.androidApps.create adalah Operation . Sebelum Anda dapat memanggil endpoint terkait Firebase lainnya untuk proyek Anda, operasi harus berhasil.

Untuk memeriksa apakah operasi berhasil, Anda dapat memanggil operations.get pada operasi hingga nilai done true dan response adalah tipe AndroidApp . Jika operasi gagal, error disetel ke google.rpc.Status .

Inilah badan respons dari panggilan 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"
  }
}

Karena done adalah true dan jenis response adalah AndroidApp , FirebaseProject sekarang memiliki AndroidApp . Responsnya juga berisi informasi berguna lainnya tentang Aplikasi Android Firebase yang baru Anda buat, seperti Firebase appId yang unik. Operation secara otomatis dihapus setelah selesai.

Tambahkan sertifikat SHA

Anda dapat menambahkan sertifikat SHA ke Aplikasi Android Firebase yang ada dengan memanggil projects.androidApps.sha.create . Badan permintaan untuk panggilan metode ini harus memiliki bidang name kosong. Hasil dari panggilan ini adalah instance ShaCertificate yang baru dibuat.

Saat memanggil projects.androidApps.sha.create , Anda harus memberikan hash sertifikat SHA-1 atau SHA-256 yang valid. Anda bisa mendapatkan hash SHA dari sertifikat penandatanganan Anda dengan perintah gradle signingReport : l10n

./gradlew signingReport

Untuk informasi selengkapnya, kunjungi Google API untuk Android .

Anda dapat menautkan akun Google Analytics yang ada ke FirebaseProject yang ada secara terprogram. Perhatikan bahwa Anda juga dapat menautkan proyek Firebase yang ada ke Google Analytics di tab Integrasi di Setelan Proyek .

Panggilan ke projects.addGoogleAnalytics memerlukan analytics_resource , yang dapat berupa analyticsAccountId atau analyticsPropertyId :

  • Tentukan analyticsAccountId yang ada untuk menyediakan properti Google Analytics baru dalam akun yang ditentukan dan mengaitkan properti baru dengan proyek Firebase Anda.

  • Tentukan analyticsPropertyId yang ada untuk mengaitkan properti Google Analytics dengan proyek Firebase Anda.

Anda dapat menemukan analyticsAccountId dan analyticsPropertyId yang ada di situs web Google Analytics .

Saat Anda memanggil projects.addGoogleAnalytics :

  1. Pemeriksaan pertama menentukan apakah aliran data yang ada di properti Google Analytics sesuai dengan Aplikasi Firebase yang ada di FirebaseProject Anda (berdasarkan packageName atau bundleId terkait dengan aliran data). Kemudian, sebagaimana berlaku, aliran data dan aplikasi ditautkan. Perhatikan bahwa penautan otomatis ini hanya berlaku untuk Aplikasi Android dan Aplikasi iOS.

  2. Jika tidak ada aliran data terkait yang ditemukan untuk Aplikasi Firebase Anda, aliran data baru akan disediakan di properti Google Analytics untuk setiap Aplikasi Firebase Anda. Perhatikan bahwa aliran data baru selalu disediakan untuk Aplikasi Web meskipun sebelumnya dikaitkan dengan aliran data di properti Analytics Anda.

Pelajari lebih lanjut tentang hierarki dan struktur akun Google Analytics di dokumentasi Analytics .

MEMINTA

Hubungi projects.addGoogleAnalytics .

Di badan permintaan untuk contoh panggilan kami ke project.addGoogleAnalytics , kami akan menentukan analyticsAccountId akun Google Analytics kami. Panggilan ini akan menyediakan properti Google Analytics baru dan mengaitkan properti baru dengan FirebaseProject .

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

Berikut ini contoh Node.js untuk menautkan proyek Firebase dengan akun Google Analytics:

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']);
  }
}

HASIL

Hasil panggilan ke projects.addGoogleAnalytics adalah Operation . Sebelum Anda dapat memanggil endpoint terkait Firebase lainnya untuk proyek Anda, operasi harus berhasil.

Untuk memeriksa apakah operasi berhasil, Anda dapat memanggil operations.get on the operation hingga nilai done true dan response bertipe analyticsDetails . Jika operasi gagal, error disetel ke google.rpc.Status .

Inilah badan respons dari panggilan operations.get :

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

Karena done adalah true dan jenis response adalah analyticsDetails , FirebaseProject sekarang ditautkan ke akun Google Analytics yang ditentukan. Operation secara otomatis dihapus setelah selesai.

Selesaikan lokasi default proyek Anda (Opsional)

Jika project Firebase Anda akan menggunakan Cloud Firestore, Cloud Storage, atau aplikasi App Engine, Anda dapat menyelesaikan lokasi resource Google Cloud Platform (GCP) default untuk project Anda secara terprogram. Perhatikan bahwa Anda juga dapat memilih lokasi di Firebase console .

Sebelum menyetel lokasi ini, periksa Pilih lokasi untuk proyek Anda untuk informasi tentang lokasi mana yang terbaik untuk proyek Anda. Anda juga harus memanggil projects.availableLocations untuk menampilkan daftar lokasi yang valid untuk proyek Anda karena jika proyek Anda adalah bagian dari organisasi Google Cloud, maka kebijakan organisasi Anda mungkin membatasi lokasi mana yang valid untuk proyek Anda.

Memanggil metode defaultLocation.finalize ini membuat aplikasi App Engine dengan bucket Cloud Storage default yang terletak di locationId yang Anda berikan di badan permintaan.

Lokasi resource GCP default mungkin telah ditentukan jika Project sudah memiliki aplikasi App Engine atau metode defaultLocation.finalize ini sebelumnya dipanggil.

MEMINTA

Panggil projects.defaultLocation.finalize . Berikut cara membuat badan permintaan Anda:

  • Diperlukan:

    • locationId : Lokasi penyimpanan data Anda untuk layanan GCP yang memerlukan setelan lokasi, seperti Cloud Firestore atau Cloud Storage.
{
  "locationId": "us-west2"
}

Berikut ini contoh Node.js untuk menyelesaikan lokasi default proyek Anda:

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']);
  }
}

HASIL

Hasil dari panggilan ke projects.defaultLocation.finalize adalah Operation . Sebelum Anda dapat memanggil endpoint terkait Firebase lainnya untuk proyek Anda, operasi harus berhasil.

Untuk memeriksa apakah operasi berhasil, Anda dapat memanggil operations.get pada operasi sampai nilai done true dan response adalah tipe google.protobuf.Empty . Jika operasi tidak berhasil, error badan respons akan bertipe google.rpc.Status . Operation secara otomatis dihapus setelah selesai.