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

Firebase Management REST API, bir projenin Firebase kaynakları ve Firebase Uygulamaları da dahil olmak üzere Firebase projelerinin programlı kurulumuna ve yönetimine olanak tanır.

Bu genel bakış, Firebase kaynaklarını ve uygulamalarını, şu anda Firebase hizmetlerini kullanmayan mevcut bir Google Cloud projesine eklemeye yönelik genel iş akışını açıklamaktadır.

Aşağıdakileri yapmak istiyorsanız bu sayfanın belirli bölümlerine geçebilirsiniz:

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

Firebase Management API'ye yönelik erişim yönetimi hakkında bilgi edinmek 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'i tıklayın.

API erişim belirtecinizi oluşturun

Erişim belirtecinizi alan Node.js örneğini burada bulabilirsiniz.

Öncelikle, 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'le:

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

Ardından, hizmet hesabı kimlik bilgilerinizden bir erişim jetonu almak için Firebase Yönetici SDK'sını 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 hizmetlerini eklemek için kullanılabilen Google Cloud projelerini bulabilirsiniz.

RİCA ETMEK

availableProjects.list arayın. Bu çağrıya ilişkin istek gövdesi boş olmalıdır.

Node.js'nin kullanılabilir Google Cloud projelerinin listesini istemesine ilişkin bir örneği burada bulabilirsiniz:

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Ç

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 bir sonraki sayfasını almak için sorgu parametresi olarak kullanabileceğiniz bir nextPageToken içerir.

Aşağıda bir availableProjects.list çağrısının örnek yanıt gövdesi verilmiştir:

{
  "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 eklenebileceği iki Google Cloud projesi bulunmaktadır. project alanının bir proje için genel olarak benzersiz kaynak adını sağladığını unutmayın.

Firebase hizmetlerini eklemek veya projenize uygulamalar eklemek için availableProjects.list yanıtında listelenen herhangi bir project değerini kullanabilirsiniz.

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

Firebase hizmetlerini projenize ekleyin

Google Cloud projeleri Firebase'in sunduğu hizmetlerden yararlanabilir. Bu bölümde Firebase hizmetlerini mevcut Google Cloud projenize programlı olarak nasıl ekleyeceğinizi öğreneceksiniz. Firebase hizmetlerini, Firebase konsolundaki mevcut Google Cloud projenize de ekleyebileceğinizi unutmayın.

RİCA ETMEK

projects.addFirebase çağırın. Bu çağrıya ilişkin istek gövdesi boş olmalıdır.

Firebase hizmetlerini Google Cloud projenize eklemek için Node.js'nin bir örneğini burada bulabilirsiniz:

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 çağrısının sonucu bir Operation . Projeniz için Firebase ile ilgili diğer uç noktaları arayabilmeniz için işlemin başarılı olması gerekir.

İşlemin başarılı olup olmadığını kontrol etmek için, done değeri true olana ve response FirebaseProject türünde olana kadar işlemde operations.get çağırabilirsiniz. İşlem başarısız olursa error google.rpc.Status olarak ayarlanır.

operations.get çağrısının yanıt metni şöyledir:

{
  "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 true olduğundan ve response türü bir FirebaseProject olduğundan, Google Cloud projesi artık Firebase hizmetlerine sahiptir. Yanıt ayrıca yeni oluşturulan FirebaseProject hakkında, projectNumber ve varsayılan resources gibi diğer yararlı bilgileri de içerir. Operation tamamlandıktan sonra otomatik olarak silinir.

Firebase Uygulamalarını projenize ekleyin

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

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

Mevcut Firebase projenize bir Firebase Android Uygulaması ekleyebilirsiniz.

RİCA ETMEK

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

  • Gerekli:

    • packageName : Android uygulamasının Google Play Geliştirici konsolunda görüneceği standart paket adı.
  • İsteğe bağlı ancak önerilen:

    • displayName : Uygulamanın kullanıcı tarafından atanan görünen adı. Bu değer, uygulamanızı daha sonra Firebase konsolunda bulmanız açısından kullanışlıdır.

Örneğimizin istek gövdesinde packageName ve displayName kullanacağız:

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

Firebase projenize Firebase Android Uygulaması eklemek için Node.js'nin bir örneğini burada bulabilirsiniz:

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Ç

projects.androidApps.create çağrısının sonucu bir Operation . Projeniz için Firebase ile ilgili diğer uç noktaları arayabilmeniz için işlemin başarılı olması gerekir.

İşlemin başarılı olup olmadığını kontrol etmek için, done değer true olana ve response AndroidApp türünde olana kadar işlemde operations.get çağırabilirsiniz. İşlem başarısız olursa error google.rpc.Status olarak ayarlanır.

operations.get çağrısının yanıt metni şöyle:

{
  "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 true olduğundan ve response türü bir AndroidApp olduğundan, FirebaseProject artık bir AndroidApp sahiptir. Yanıt aynı zamanda yeni oluşturulan Firebase Android Uygulamanız hakkında benzersiz Firebase appId gibi diğer yararlı bilgileri de içerir. Operation tamamlandıktan sonra otomatik olarak silinir.

SHA sertifikaları ekleyin

projects.androidApps.sha.create öğesini çağırarak mevcut herhangi bir Firebase Android Uygulamasına SHA sertifikaları ekleyebilirsiniz. Bu yöntem çağrısının istek gövdesinde boş bir name alanı bulunmalıdır. Bu çağrının sonucu ShaCertificate yeni oluşturulmuş bir örneğidir.

projects.androidApps.sha.create öğesini çağırırken geçerli bir SHA-1 veya SHA-256 sertifika karması sağlamanız gerekir. İmza sertifikanızın SHA karmasını signingReport komutuyla alabilirsiniz:

./gradlew signingReport

Daha fazla bilgi için Android için Google API'lerini ziyaret edin.

Mevcut bir Google Analytics hesabını mevcut FirebaseProject programlı bir şekilde bağlayabilirsiniz. Mevcut Firebase projenizi, Proje Ayarlarınızdaki Entegrasyonlar sekmesinden Google Analytics'e de bağlayabileceğinizi unutmayın.

projects.addGoogleAnalytics çağrısı, bir analytics_resource gerektirir; bu, bir analyticsAccountId veya bir analyticsPropertyId olabilir:

  • Belirtilen hesapta yeni bir Google Analytics mülkünün temel hazırlığını yapmak 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.

Hem analyticsAccountId hem de mevcut herhangi bir analyticsPropertyId Google Analytics web sitesinde bulabilirsiniz.

projects.addGoogleAnalytics çağırdığınızda:

  1. İlk kontrol, Google Analytics mülkündeki mevcut herhangi bir veri akışının FirebaseProject mevcut herhangi bir Firebase Uygulamasına karşılık gelip gelmediğini belirler (veri akışıyla ilişkili packageName veya bundleId temel alınarak). Daha sonra, 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 ilgili veri akışı bulunamazsa 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 temel hazırlığının yapıldığını unutmayın.

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

RİCA ETMEK

projects.addGoogleAnalytics arayın.

project.addGoogleAnalytics yaptığımız örnek çağrının istek gövdesinde, Google Analytics hesabımızın analyticsAccountId belirteceğiz. Bu çağrı, yeni bir Google Analytics mülkünün temel hazırlığını yapacak ve yeni mülkü FirebaseProject ile ilişkilendirecek.

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

Bir Firebase projesini bir Google Analytics hesabına bağlamak için Node.js'nin bir örneğini burada bulabilirsiniz:

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 yapılan çağrının sonucu bir Operation . Projeniz için Firebase ile ilgili diğer uç noktaları arayabilmeniz için işlemin başarılı olması gerekir.

İşlemin başarılı olup olmadığını kontrol etmek için, done değeri true olana ve response analyticsDetails türünde olana kadar işlemde operations.get çağırabilirsiniz. İşlem başarısız olursa error google.rpc.Status olarak ayarlanır.

operations.get çağrısının yanıt metni şöyledir:

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

done doğru olduğundan ve response türü de 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 (İsteğe bağlı)

Firebase projeniz Cloud Firestore, Cloud Storage veya bir App Engine uygulamasını 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 en iyi konumun hangisi olduğu hakkında bilgi almak üzere Projeniz için konumları seçin konusuna bakın. Projeniz için geçerli konumların bir listesini döndürmek için de projects.availableLocations çağırmalısınız; çünkü projeniz bir Google Cloud kuruluşunun parçasıysa kuruluş politikalarınız, projeniz için hangi konumların geçerli olduğunu kısıtlayabilir .

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

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

RİCA ETMEK

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

  • Gerekli:

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

Projenizin varsayılan konumunu sonlandırmak için Node.js'nin bir örneğini burada bulabilirsiniz:

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ı arayabilmeniz için işlemin başarılı olması gerekir.

İşlemin başarılı olup olmadığını kontrol etmek için, done değeri true olana ve response google.protobuf.Empty türünde olana kadar işlemde operations.get çağırabilirsiniz. İşlem başarısız olursa yanıt gövdesi error google.rpc.Status türünde olacaktır. Operation tamamlandıktan sonra otomatik olarak silinir.