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

Firebase Yönetimi REST API bir projenin Firebase kaynakları ve Firebase Apps dahil Firebase projelerinin programatik kurulum ve yönetim sağlayan.

Bu genel bakış Varolan için Firebase kaynakları ve uygulamaları eklemek için genel iş akışını açıklar Google Bulut projesi şu anda Firebase hizmetlerini kullanmaz.

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

Bu sayfada herhangi adımları uygulamadan önce emin olun API sağlamak .

Firebase Yönetimi API için erişim yönetimi hakkında bilgi için ziyaret Bulut Kimlik Erişim Yönetimi (IAM) API belgelerini .

Sen başlamadan önce

Başlamadan önce, şunları yapmanız gerekir Yönetimi API etkinleştirmek Google Bulut proje için ve belirteç erişiminizi oluşturmak .

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

Henüz varsa, etkinleştirmeniz gerekir Firebase Yönetimi API Google Bulut projesi ile kullanım için.

  1. Firebase Yönetimi API Google API konsolunda sayfa.
  2. İstendiğinde, Google Cloud projenizi seçin.
  3. Tıklayın Firebase Yönetimi API sayfasına etkinleştirin.

API erişim simgenizi oluşturun

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

Bir Google Cloud ortamında değilseniz Birincisi, set GOOGLE_APPLICATION_CREDENTIALS servis hesabı anahtarına yoluna ortam değişkeni.

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 çağrıdan cevap gövdesi availableProjects.list bir listesini içerir ProjectInfo nesneler. Projelerin listesi çok uzunsa, yanıt gövde aynı zamanda bir içeriyorsa nextPageToken sen projelerin sonraki sayfayı almak için bir sorgu parametresi olarak da kullanabilirsiniz.

İşte bir örneği tepkisi vücudu availableProjects.list çağrısı:

{
  "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. Not project alanı bir proje için genel benzersiz kaynak adını sağlar.

Herhangi kullanabilirsiniz project dan yanıt olarak listelenen değeri availableProjects.list için Firebase hizmet eklemek veya uygulamalar eklemek projenize.

Bir sonraki bölümde, biz Firebase hizmetlerini ekleriz First Cloud Project kullanarak projects/first-gcp-project kaynak adını.

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. Ayrıca içinde mevcut Google Cloud projeye Firebase hizmetlerini ekleyebileceğiniz Not Firebase konsoluna .

İSTEK

Çağrı projects.addFirebase . 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Ç

Yapılan çağrının sonucu projects.addFirebase bir olduğunu 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 onun error olarak ayarlanır google.rpc.Status .

İşte bir tepki vücudu operations.get çağrısı:

{
  "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 otomatik tamamlanmasından sonra silinir.

Projenize Firebase Uygulamaları ekleyin

Birçok farklı uygulamalar bir kullanabilir FirebaseProject iOS, Android ve web uygulamaları da dahil olmak üzere,. Bu bölümde, mevcut üzere Firebase Apps eklemek öğreneceksiniz FirebaseProject programlı. Ayrıca içinde mevcut Firebase projeye Firebase Apps ekleyebileceğiniz Not Firebase konsoluna .

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

Var olan Firebase proje için bir Firebase Android Uygulaması ekleyebilirsiniz.

İSTEK

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

  • Gereklidir:

    • packageName : Google Play'in Geliştirici konsolunda görünür olarak Android uygulamasının kurallı paket adı.
  • İsteğe bağlı, ancak önerilir:

    • displayName : Uygulamanın kullanıcı tarafından atanan görünen adı. Bu değer daha sonra uygulamanızı bulmak için yararlıdır Firebase konsoluna .

Örneğimizde talebi gövdesinde, biz kullanacağız packageName ve displayName :

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

Node.js'nin Firebase projenize bir Firebase Android Uygulaması eklemesi için bir örnek:

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

SONUÇ

Yapılan çağrının sonucu projects.androidApps.create bir olduğunu 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 AndroidApp . İşlem başarısız olursa onun error olarak ayarlanır google.rpc.Status .

İşte bir tepki vücudu operations.get çağrısı:

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

Yana done olduğu true ve response türü bir olan AndroidApp , FirebaseProject şimdi vardır AndroidApp . Tepki de benzersiz Firebase gibi yeni oluşturulan Firebase Android App ilgili diğer yararlı bilgileri içerir appId . Operation otomatik tamamlanmasından sonra silinir.

SHA sertifikaları ekleyin

Sen arayarak varolan herhangi Firebase Android Uygulamasına SHA sertifikalarını ekleyebilir projects.androidApps.sha.create . Bu yöntem çağrısı için istek gövdesi boş olması gerekir name alanını. Bu çağrı sonucu bir yeni oluşturulan örneğidir ShaCertificate .

Çağırırken projects.androidApps.sha.create , geçerli bir SHA-1 veya SHA-256 sertifika karma sağlamanız gerekir. Sen gradle ile imzalama sertifikasının SHA karma alabilirsiniz signingReport komutu:

./gradlew signingReport

Daha fazla bilgi için, ziyaret Android için Google API'leri .

Varolan bağlayabilirsiniz Google Analytics hesabı mevcut üzere FirebaseProject programlı. Ayrıca Google Analytics mevcut Firebase projeyi bağlayabileceğinizi Not Entegrasyonları Project Ayarlar sekmesine.

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

  • Varolan belirtin analyticsAccountId hükme belirtilen hesap içinde yeni bir Google Analytics mülkünüzü ve Firebase projesi ile yeni bir mülk ilişkilendirmek.

  • Varolan belirtin analyticsPropertyId sizin Firebase projesi ile Google Analytics mülkü ilişkilendirmek için.

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

Aradığınızda projects.addGoogleAnalytics :

  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.

Hesapları daha fazla Google Analytics hiyerarşisi ve yapısı hakkında bilgi Analytics belgelerinde .

İSTEK

Çağrı projects.addGoogleAnalytics .

Bizim örnek çağrısı için istek gövdesinde project.addGoogleAnalytics , bizim Google Analytics hesabını belirlersiniz analyticsAccountId . Bu çağrı irade hüküm yeni bir Google Analytics mülk ve yeni özellik ilişkilendirmek FirebaseProject .

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

Yapılan çağrının sonucu projects.addGoogleAnalytics bir olduğunu 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 onun error olarak ayarlanır google.rpc.Status .

İşte bir tepki vücudu operations.get çağrısı:

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

Yana done doğrudur ve response türüdür analyticsDetails , FirebaseProject artık belirtilen Google Analytics hesabına bağlı. Operation otomatik tamamlanmasından sonra silinir.

Projenizin varsayılan konumunu kesinleştirin (Opsiyonel)

Senin Firebase projesi Bulut FireStore, Cloud Storage veya bir App Engine uygulamasını kullanabilirsiniz olacaksa, sonuçlandırmak olabilir varsayılan Google Cloud Platformu (GSO) kaynak yeri programlı projeniz için. Ayrıca bir konum seçmek anlamına Not Firebase konsoluna .

Bu konumu ayarlamadan önce, kontrol projeniz için Seç yerleri konum projeniz için en uygun olduğunu hakkında bilgi için. 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 çağrılması defaultLocation.finalize ifadesini kullanarak bir App Engine uygulaması yöntemini oluşturur varsayılan Cloud Storage bulunan locationId istek vücuttaki sağladığını.

Varsayılan GSO kaynak yeri zaten belirtilmiş olabilir Project zaten bir App Engine uygulaması vardır ya bu defaultLocation.finalize yöntemi daha önce çağrıldı.

İSTEK

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

  • Gereklidir:

    • locationId : Veri Bulut Firestore veya Cloud Storage gibi bir konum ayarı gerektiren GSO hizmetleri için depolandığı yerde.
{
  "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Ç

Yapılan çağrının sonucu projects.defaultLocation.finalize bir olduğunu 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 . Operasyon başarısız olursa, yanıt gövde error tipi olacaktır google.rpc.Status . Operation otomatik tamamlanmasından sonra silinir.