Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Management REST API'yi kullanarak bir Firebase projesi kurun ve yönetin

Firebase Management REST API , bir projenin Firebase kaynakları ve Firebase Uygulamaları dahil olmak üzere Firebase projelerinin programlı kurulumunu ve yönetimini sağlar.

Bu genel bakış, şu anda Firebase hizmetlerini kullanmayan mevcut bir Google Cloud projesine Firebase kaynakları ve uygulamaları eklemek için genel iş akışını açıklar.

Aşağıdakileri yapmak istiyorsanız, bu sayfanın belirli bölümlerine atlayabilirsiniz:

Bu sayfadaki herhangi bir adımı uygulamadan önce API'yi etkinleştirdiğinizden emin olun.

Firebase Management API için erişim yönetimi hakkında bilgi için Cloud Identity Access Management (IAM) API belgelerini ziyaret edin.

Sen başlamadan önce

Başlamadan önce, Google Cloud projeniz için Yönetim API'sini etkinleştirmeniz ve erişim jetonunuzu oluşturmanız gerekir .

Google Cloud projeniz için Management REST API'yi etkinleştirin

Henüz yapmadıysanız, Google Cloud projenizle kullanmak için Firebase Management API'yi etkinleştirmeniz gerekir.

  1. Google API konsolunda Firebase Management API sayfasını açın.
  2. İstendiğinde, Google Cloud projenizi seçin.
  3. Firebase Management API sayfasında Etkinleştir'e tıklayın.

API erişim simgenizi oluşturun

İşte erişim belirtecinizi alan bir Node.js örneği.

İlk olarak, bir Google Cloud ortamında değilseniz, GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini hizmet hesabı anahtarınızın yoluna ayarlayın.

Linux veya macOS

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

pencereler

PowerShell ile:

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

Ardından, hizmet hesabı kimlik bilgilerinizden bir erişim belirteci almak için Firebase Admin SDK'yı kullanın:

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

Projenizin kaynak adını bulun

Firebase hizmetleri eklemek için kullanılabilen Google Cloud projelerini bulabilirsiniz.

İSTEK

Çağrı availableProjects.list . Bu çağrı için istek gövdesi boş olmalıdır.

Node.js'nin mevcut Google Cloud projelerinin bir listesini istemesi için bir örnek:

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

SONUÇ

Bir availableProjects.list çağrısından gelen yanıt gövdesi, ProjectInfo nesnelerinin bir listesini içerir. Proje listesi çok uzunsa, yanıt gövdesi ayrıca projelerin sonraki sayfasını almak için sorgu parametresi olarak kullanabileceğiniz bir nextPageToken içerir.

İşte availableProjects.list çağrısının örnek bir yanıt gövdesi:

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

Bu örnek yanıtta, Firebase hizmetlerinin kendilerine eklenebileceği iki Google Cloud projesi vardır. project alanının, bir proje için global olarak benzersiz kaynak adını sağladığını unutmayın.

Firebase hizmetleri eklemek veya projenize uygulamalar eklemek için availableProjects.list gelen yanıtta listelenen herhangi bir project değerini kullanabilirsiniz.

Sonraki bölümde, projects/first-gcp-project kaynak adını kullanarak Firebase hizmetlerini First Cloud Project ekleyeceğiz.

Projenize Firebase hizmetleri ekleyin

Google Cloud projeleri, Firebase tarafından sunulan hizmetlerden yararlanabilir. Bu bölümde, mevcut Google Cloud projenize programlı olarak Firebase hizmetlerini nasıl ekleyeceğinizi öğreneceksiniz. Firebase konsolunda mevcut Google Cloud projenize Firebase hizmetleri de ekleyebileceğinizi unutmayın.

İSTEK

projects.addFirebase arayın. Bu çağrı için istek gövdesi boş olmalıdır.

Google Cloud projenize Firebase hizmetleri eklemek için Node.js için bir örnek:

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

SONUÇ

projects.addFirebase bir çağrının sonucu bir Operation . Projeniz için Firebase ile ilgili diğer uç noktaları çağırmadan önce işlemin başarılı olması gerekir.

İşlem başarılı olup olmadığını kontrol etmek için arayabileceğiniz operations.get değeri kadar operasyon done olduğu true ve bunun response tipi taşımaktadır FirebaseProject . İşlem başarısız olursa, error google.rpc.Status olarak ayarlanır.

İşte bir operations.get çağrısının yanıt gövdesi:

{
  "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"
    }
  }
}

Yana done olduğu true ve response türü bir olan FirebaseProject , Google Bulut proje şimdi Firebase hizmetleri vardır. Tepki de yeni oluşturulan ilgili diğer yararlı bilgiler içerir FirebaseProject onun gibi projectNumber ve varsayılan resources . Operation tamamlandıktan sonra otomatik olarak silinir.

Projenize Firebase Uygulamaları ekleyin

iOS, Android ve web uygulamaları dahil birçok farklı uygulama bir FirebaseProject kullanabilir. Bu bölümde, Firebase Uygulamalarını mevcut FirebaseProject programlı olarak nasıl ekleyeceğinizi öğreneceksiniz. Firebase konsolunda mevcut Firebase projenize Firebase Uygulamaları da ekleyebileceğinizi unutmayın.

Firebase projenize eklemek için bir Firebase Uygulaması türü seçin.

Mevcut bir Google Analytics hesabını mevcut FirebaseProject programlı olarak bağlayabilirsiniz. Ayrıca, Proje Ayarlarınızın Entegrasyonlar sekmesinde mevcut Firebase projenizi Google Analytics'e bağlayabileceğinizi unutmayın.

Çağrı projects.addGoogleAnalytics bir gerektirir analytics_resource ya bir olabilir, analyticsAccountId veya analyticsPropertyId :

  • Belirtilen hesap içinde yeni bir Google Analytics mülkü sağlamak ve yeni mülkü Firebase projenizle ilişkilendirmek için mevcut bir analyticsAccountId belirtin.

  • Google Analytics mülkünü Firebase projenizle ilişkilendirmek için mevcut bir analyticsPropertyId belirtin.

Eğer hem bulabilirsiniz analyticsAccountId ve mevcut analyticsPropertyId üzerinde Google Analytics web .

projects.addGoogleAnalytics aradığınızda:

  1. Herhangi mevcut veriler mevcut tüm Firebase Apps Google Analytics mülk tekabül ettiği akışları ise ilk onay belirler FirebaseProject (dayalı packageName veya bundleId veri akışı ile ilişkili). Ardından, uygun olduğu şekilde, veri akışları ve uygulamalar birbirine bağlanır. Bu otomatik bağlantının yalnızca Android Uygulamaları ve iOS Uygulamaları için geçerli olduğunu unutmayın.

  2. Firebase Uygulamalarınız için karşılık gelen veri akışları bulunmazsa, Firebase Uygulamalarınızın her biri için Google Analytics mülkünde yeni veri akışları sağlanır. Daha önce Analytics mülkünüzdeki bir veri akışıyla ilişkilendirilmiş olsa bile, bir Web Uygulaması için her zaman yeni bir veri akışının sağlandığını unutmayın.

Google Analytics hesaplarının hiyerarşisi ve yapısı hakkında daha fazla bilgiyi Analytics belgelerinde bulabilirsiniz .

İSTEK

projects.addGoogleAnalytics arayın.

project.addGoogleAnalytics için örnek çağrımızın istek gövdesinde, Google Analytics hesabı analyticsAccountId belirteceğiz. Bu çağrı, yeni bir Google Analytics mülkü sağlar ve yeni mülkü FirebaseProject ile ilişkilendirir.

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

Node.js'nin bir Firebase projesini bir Google Analytics hesabına bağlaması için bir örnek:

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

SONUÇ

projects.addGoogleAnalytics bir çağrının sonucu bir Operation . Projeniz için Firebase ile ilgili diğer uç noktaları çağırmadan önce işlemin başarılı olması gerekir.

İşlem başarılı olup olmadığını kontrol etmek için arayabileceğiniz operations.get değeri kadar operasyon done olduğu true ve response türü taşımaktadır analyticsDetails . İşlem başarısız olursa, error google.rpc.Status olarak ayarlanır.

İşte bir operations.get çağrısının yanıt gövdesi:

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

done true olduğundan ve response türü analyticsDetails olduğundan, FirebaseProject artık belirtilen Google Analytics hesabına bağlıdır. Operation tamamlandıktan sonra otomatik olarak silinir.

Projenizin varsayılan konumunu kesinleştirin (Opsiyonel)

Firebase projeniz Cloud Firestore, Cloud Storage veya bir App Engine uygulaması kullanacaksa projeniz için varsayılan Google Cloud Platform (GCP) kaynak konumunu programlı olarak sonlandırabilirsiniz. Firebase konsolunda da bir konum seçebileceğinizi unutmayın.

Bu konumu ayarlamadan önce , projeniz için hangi konumun en iyi olduğu hakkında bilgi için Projeniz için konumları seçin'e bakın. Ayrıca çağırmalıdır projects.availableLocations sonra, projeniz Bir Google Cloud örgütün parçası olup olmadığını, çünkü projeniz için geçerli yerlerin listesini döndürmek için organizasyon politikaları hangi yerleri kısıtlamak olabilir projeniz için geçerlidir.

Bu defaultLocation.finalize yönteminin çağrılması, istek gövdesinde sağladığınız locationId bulunan varsayılan bir Cloud Storage defaultLocation.finalize bir App Engine uygulaması oluşturur.

Project zaten bir App Engine uygulaması varsa veya bu defaultLocation.finalize yöntemi daha önce çağrıldıysa, varsayılan GCP kaynak konumu zaten belirtilmiş olabilir.

İSTEK

projects.defaultLocation.finalize çağırın. İstek gövdenizi nasıl oluşturacağınız aşağıda açıklanmıştır:

  • Gereklidir:

    • locationId : Cloud Firestore veya Cloud Storage gibi bir konum ayarı gerektiren GCP hizmetleri için verilerinizin depolandığı konum.
{
  "locationId": "us-west2"
}

Node.js'nin projenizin varsayılan konumunu tamamlaması için bir örnek:

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

SONUÇ

projects.defaultLocation.finalize çağrısının sonucu bir Operation . Projeniz için Firebase ile ilgili diğer uç noktaları çağırmadan önce işlemin başarılı olması gerekir.

İşlem başarılı olup olmadığını kontrol etmek Arayabileceğin operations.get değeri kadar operasyon done olduğu true ve bunun response tipi taşımaktadır google.protobuf.Empty . İşlem başarısız olursa, yanıt gövdesi error google.rpc.Status türünde google.rpc.Status . Operation tamamlandıktan sonra otomatik olarak silinir.