Management REST API'yi kullanarak Firebase projesi oluşturma ve yönetme

Firebase Management REST API, Firebase projelerinin (projenin Firebase kaynakları ve Firebase uygulamaları dahil) programatik olarak ayarlanmasını ve yönetilmesini sağlar.

Bu genel bakışta, henüz Firebase hizmetlerini kullanmayan mevcut bir Google Cloudprojesine Firebase kaynakları ve uygulamaları eklemeyle ilgili genel iş akışı açıklanmaktadır.

Yalnızca aşağıdaki işlemleri yapmak istiyorsanız bu sayfanın belirli bölümlerine gidebilirsiniz:

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

Firebase Management API'de erişim yönetimi hakkında bilgi edinmek için Cloud Identity Access Management (IAM) API dokümanlarını inceleyin.

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'leri 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 jetonunuzu oluşturma

Erişim jetonunuzu alan Node.js örneğini aşağıda bulabilirsiniz.

Öncelikle Google Cloud ortamında değilseniz GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini hizmet hesabı anahtarınızın yolu olarak ayarlayın.

Linux veya macOS

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

Windows

PowerShell ile:

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

Ardından, hizmet hesabı kimlik bilgilerinizden erişim jetonu almak için Firebase Admin 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ı bulma

Firebase hizmetleri ekleyebileceğiniz Google Cloud projeyi bulabilirsiniz.

İSTE

availableProjects.list numaralı telefonu arayın. Bu çağrının istek gövdesi boş olmalıdır.

Node.js'de kullanılabilir Google Cloud projelerin listesini istemek için aşağıdaki örneği kullanabilirsiniz:

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övdesinde ProjectInfo nesnelerinin listesi bulunur. Proje listesi çok uzunsa yanıt gövdesinde, projelerin bir sonraki sayfasını almak için sorgu parametresi olarak kullanabileceğiniz bir nextPageToken de bulunur.

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 var. project alanının, bir proje için global olarak benzersiz kaynak adını sağladığını unutmayın.

Projenize Firebase hizmetleri eklemek veya uygulama eklemek için project yanıtında listelenen değerlerden herhangi birini kullanabilirsiniz.availableProjects.list

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

Projenize Firebase hizmetleri ekleme

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

İSTE

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

Firebase hizmetlerini Google Cloudprojenize eklemek için Node.js ile ilgili bir örneği aşağıda 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 işlevine yapılan bir çağrının sonucu Operation olur. Projeniz için Firebase ile ilgili diğer uç noktaları çağırmadan önce işlemin başarılı olması gerekir.

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

operations.get çağrısının yanıt gövdesi aşağıda verilmiştir:

{
  "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 ve response türü FirebaseProject olduğundan, Google Cloud projesinde artık Firebase hizmetleri bulunur. Yanıt, yeni oluşturduğunuz FirebaseProject hakkında diğer faydalı bilgileri de içerir. Örneğin, projectNumber ve varsayılan resources. Operation, tamamlandıktan sonra otomatik olarak silinir.

Projenize Firebase uygulamaları ekleme

iOS, Android ve web uygulamaları dahil olmak üzere birçok farklı uygulama FirebaseProject kullanabilir. Bu bölümde, mevcut FirebaseProject programınıza Firebase uygulamalarını nasıl ekleyeceğinizi öğreneceksiniz. Firebase uygulamalarını Firebase konsolunda mevcut Firebase projenize de ekleyebileceğinizi unutmayın.

Firebase projenize eklenecek bir Firebase uygulaması türü seçin.

iOS+

Mevcut Firebase projenize Firebase iOS uygulaması ekleyebilirsiniz.

İSTE

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

  • Gerekli:

    • bundleId: iOS App Store'da görünecek şekilde iOS uygulamasının standart paket kimliği.
  • İsteğe bağlı olsa da önerilir:

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

    • appStoreId: Apple tarafından uygulamanıza atanan otomatik olarak oluşturulmuş Apple kimliği. Apple tarafından atanmışsa bir appStoreId belirtin.

Örneğimizin istek gövdesinde yalnızca displayName ve bundleId kullanacağız:

{
  "displayName": "My Firebase iOS App",
  "bundleId": "com.firebase.ios"
}

Firebase projenize Firebase iOS uygulaması eklemek için Node.js ile ilgili bir örneği aşağıda bulabilirsiniz:

const fetch = require('node-fetch');

async function addIosApp(projectId, displayName, bundleId) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/iosApps';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'displayName': displayName,
      'bundleId': bundleId
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

SONUÇ

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

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

operations.get çağrısının yanıt gövdesi aşağıda verilmiştir:

{
  "name": "operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.IosApp",
    "name": "projects/first-cloud-project/iosApps/...",
    "appId": "...",
    "displayName": "My Firebase iOS App",
    "projectId": "first-cloud-project",
    "bundleId": "com.firebase.ios"
  }
}

done, true olduğundan ve response türü bir IosApp olduğundan FirebaseProject artık bir IosApp içeriyor. Yanıt, yeni oluşturulan Firebase iOS uygulamanızla ilgili diğer yararlı bilgileri de içerir. Örneğin, benzersiz Firebase appId. Operation, tamamlandıktan sonra otomatik olarak silinir.

Android

Mevcut Firebase projenize Firebase Android uygulaması ekleyebilirsiniz.

İSTE

projects.androidApps.create numaralı telefonu arayı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 Konsolu'nda görüneceği şekliyle standart paket adı.
  • İsteğe bağlı olsa da önerilir:

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

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

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

Firebase Android uygulamasını Firebase projenize eklemek için Node.js ile ilgili bir örneği aşağıda 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 işlevine yapılan bir çağrının sonucu Operation olur. Projeniz için Firebase ile ilgili diğer uç noktaları çağırmadan önce işlemin başarılı olması gerekir.

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

operations.get çağrısının yanıt gövdesi aşağıda verilmiştir:

{
  "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 içeriyor. Yanıt, yeni oluşturulan Firebase Android uygulamanızla ilgili diğer faydalı bilgileri de içerir. Örneğin, benzersiz Firebase appId. Operation, tamamlandıktan sonra otomatik olarak silinir.

SHA sertifikaları ekleme

projects.androidApps.sha.create işlevini çağırarak mevcut Firebase Android uygulamalarına SHA sertifikaları ekleyebilirsiniz. Bu yöntem çağrısının istek metninde boş bir name alanı olmalıdır. Bu çağrının sonucu, yeni oluşturulan bir ShaCertificate örneğidir.

projects.androidApps.sha.create numaralı telefonu aradığınızda geçerli bir SHA-1 veya SHA-256 sertifika karması sağlamanız gerekir. İmzalama sertifikanızın SHA karmasını gradle signingReport komutuyla alabilirsiniz:

./gradlew signingReport

Daha fazla bilgi için Android için Google API'leri başlıklı makaleyi inceleyin.

Web

Mevcut Firebase projenize Firebase web uygulaması ekleyebilirsiniz.

İSTE

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

  • İsteğe bağlı:

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

    • appUrls: Uygulamanın barındırıldığı tam URL'ler. Bir Firebase web uygulaması Firebase Hosting sitesiyle ilişkilendirildiğinde Firebase bu alanları otomatik olarak doldurur. Bu nedenle, istek gövdenizde bu alanları boş bırakın.

Örneğimizde istek gövdesinde yalnızca displayName belirtiyoruz:

{
  "displayName": "My Firebase Web App"
}

Firebase projenize Firebase web uygulaması eklemek için Node.js ile ilgili bir örneği aşağıda bulabilirsiniz:

const fetch = require('node-fetch');

async function addWebApp(projectId, displayName) {
  const accessToken = getAccessToken();
  const uri = 'https://firebase.googleapis.com/v1beta1/projects/' + projectId + '/webApps';
  const options = {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer ' + accessToken,
    },
    body: JSON.stringify({
      'displayName': displayName
    }),
  };

  try {
    const rawResponse = await fetch(uri, options);
    const resp = await rawResponse.json();
    console.log(resp);
  } catch(err) {
    console.error(err['message']);
  }
}

SONUÇ

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

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

operations.get çağrısının yanıt gövdesi aşağıda verilmiştir:

{
  "name": "operations/...",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.firebase.service.v1beta1.WebApp",
    "name": "projects/first-cloud-project/webApps/...",
    "appId": "...",
    "displayName": "My Firebase Web App",
    "projectId": "first-cloud-project"
  }
}

done, true olduğundan ve response türü WebApp olduğundan FirebaseProject artık WebApp içeriyor. Yanıt, yeni oluşturulan Firebase web uygulamanızla ilgili diğer yararlı bilgileri de içerir. Örneğin, benzersiz Firebase appId. Operation, tamamlandıktan sonra otomatik olarak silinir.

Mevcut bir Google Analytics hesabını mevcut FirebaseProject programınıza bağlayabilirsiniz. Mevcut Firebase projenizi Entegrasyonlar sekmesindeki Proje Ayarları bölümünden de Google Analytics'e bağlayabileceğinizi unutmayın.

projects.addGoogleAnalytics işlevinin çağrılması için analytics_resource gerekir. Bu, analyticsAccountId veya analyticsPropertyId olabilir:

  • Belirtilen hesapta 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.

analyticsAccountId ve mevcut analyticsPropertyId mülklerinizi Google Analytics web sitesinde bulabilirsiniz.

projects.addGoogleAnalytics numaralı telefonu aradığınızda:

  1. İlk kontrol, Google Analytics mülkündeki mevcut veri akışlarından herhangi birinin, Firebase uygulamalarınızdaki mevcut uygulamalara karşılık gelip gelmediğini belirler (veri akışıyla ilişkili packageName veya bundleId'ye göre).FirebaseProject Ardından, uygun olduğu durumlarda veri akışları ve uygulamalar bağlanır. Bu otomatik bağlantının yalnızca Android 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ı 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 web uygulamaları için her zaman yeni bir veri akışı sağlandığını unutmayın.

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

İSTE

projects.addGoogleAnalytics numaralı telefonu arayın.

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

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

Firebase projesini Google Analytics hesabına bağlamak için Node.js ile ilgili bir örneği aşağıda 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 işlevine yapılan bir çağrının sonucu Operation olur. Projeniz için Firebase ile ilgili diğer uç noktaları çağırmadan önce işlemin başarılı olması gerekir.

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

operations.get çağrısının yanıt gövdesi aşağıda verilmiştir:

{
  "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ü analyticsDetails olduğundan, FirebaseProject artık belirtilen Google Analytics hesabına bağlıdır. Operation tamamlandıktan sonra otomatik olarak silinir.