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

Firebase Management REST API, projenin Firebase kaynakları ve Firebase uygulamaları da dahil olmak üzere Firebase projelerinin programatik olarak ayarlanmasını ve yönetilmesini sağlar.

Bu genel bakışta, henüz Firebase hizmetlerini kullanmayan mevcut bir Google Cloud projesine Firebase kaynakları ve uygulamaları eklemek için kullanılan genel iş akışı açıklanmaktadır.

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

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

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

Başlamadan önce

Başlamadan önce Google Cloud projeniz için Management API'yi 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 projenizde 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

Aşağıda, erişim jetonunuzu alan Node.js örneği verilmiştir.

Öncelikle, 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"

Windows

Powerpoint 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'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ı bulma

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

İSTE

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

Node.js'in mevcut Google Cloudprojelerinin listesini istemek için kullanabileceği örnek bir kod aşağıda verilmiştir:

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

Aşağıda, 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 eklenebilecek iki Google Cloud projesi var. project alanının, bir projenin dünya genelinde benzersiz kaynak adını sağladığını unutmayın.

availableProjects.list projesindeki yanıtta listelenen herhangi bir project değerini kullanarak Firebase hizmetleri ekleyebilir veya projenize uygulama ekleyebilirsiniz.

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

Firebase hizmetlerini projenize ekleyin

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

İSTE

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

Google CloudProjenize Firebase hizmetlerini eklemek için Node.js'de kullanabileceğiniz ö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 çağrısının sonucu olarak Operation kullanılır. Projeniz için Firebase ile ilgili diğer uç noktaları çağırabilmeniz 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 değeri FirebaseProject türüne sahip olana kadar işlem üzerinde operations.get işlevini çağırabilirsiniz. İşlem başarısız olursa error değeri google.rpc.Status olarak ayarlanır.

Bir 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 türü true ve response türü FirebaseProject olduğundan Google Cloud projesinde artık Firebase hizmetleri var. Yanıt, yeni oluşturulan FirebaseProject ile ilgili diğer faydalı bilgileri de içerir (ör. projectNumber ve varsayılan resources). Operation, işlem tamamlandıktan sonra otomatik olarak silinir.

Firebase Apps'i projenize ekleyin

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

Firebase projenize eklenecek Firebase Uygulaması türünü seçin.

Mevcut Firebase projenize bir 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ünen 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 yararlı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 ile ilgili 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Ç

projects.androidApps.create'e yapılan bir aramanın sonucu bir Operation olur. Projeniz için Firebase ile ilgili diğer uç noktaları çağırabilmeniz için önce 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 değeri AndroidApp türüne sahip olana kadar işlem üzerinde operations.get işlevini çağırabilirsiniz. İş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 türü true ve response türü AndroidApp olduğundan FirebaseProject için artık AndroidApp var. Yanıt, yeni oluşturduğunuz Firebase Android uygulaması hakkında benzersiz Firebase appId gibi diğer yararlı bilgileri de içerir. Operation, tamamlandıktan sonra otomatik olarak silinir.

SHA sertifikaları ekleme

projects.androidApps.sha.create kodunu çağırarak mevcut herhangi bir Firebase Android uygulaması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, ShaCertificate etiketinin yeni oluşturulmuş bir örneğidir.

projects.androidApps.sha.create numarasını 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 bölümünü ziyaret edin.

Mevcut bir Google Analytics hesabını mevcut FirebaseProject hesabınıza programatik olarak bağlayabilirsiniz. Mevcut Firebase projenizi Proje Ayarlarınızın Entegrasyonlar sekmesinden Google Analytics'e bağlayabileceğinizi de unutmayın.

projects.addGoogleAnalytics çağrısı için analytics_resource gerekir. analytics_resource, 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.

Hem analyticsAccountId'nizi hem de mevcut analyticsPropertyId'lerinizi Google Analytics web sitesinde bulabilirsiniz.

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

  1. İlk kontrol, Google Analytics mülkünde mevcut veri akışlarının FirebaseProject'ünüzdeki mevcut Firebase uygulamalarına (veri akışıyla ilişkili packageName veya bundleId'ye göre) karşılık gelip gelmediğini belirler. Ardından, geçerli olduğu durumlarda veri akışları ve uygulamalar bağlanır. Bu otomatik bağlamanın yalnızca Android ve iOS uygulamaları için geçerli olduğunu unutmayın.

  2. Firebase uygulamalarınız için ilgili veri akışı bulunamazsa Google Analytics mülkünde Firebase uygulamalarınızın her biri için yeni veri akışları sağlanır. Bir Web Uygulaması için Analytics mülkünüzde daha önce bir veri akışıyla ilişkilendirilmiş olsa bile her zaman yeni bir veri akışının sağlanacağını unutmayın.

Google Analytics hesaplarının hiyerarşisi ve yapısı hakkında daha fazla bilgiyi Analytics dokümanlarından edinebilirsiniz.

İSTE

projects.addGoogleAnalytics numaralı telefonu arayın.

project.addGoogleAnalytics adresine yaptığımız örnek çağrının istek gövdesinde analyticsAccountId Google Analytics hesabımızı belirtiriz. Bu çağrı, yeni bir Google Analytics mülkü oluşturur ve yeni mülkü FirebaseProject ile ilişkilendirir.

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

Node.js ile bir Firebase projesini Google Analytics hesabına bağlamaya yönelik bir örnek aşağıda verilmiştir:

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'e yapılan bir aramanın sonucu bir Operation olur. Projeniz için Firebase ile ilgili diğer uç noktaları çağırabilmeniz için önce 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üne sahip olana kadar işlemde operations.get'ü çağırabilirsiniz. İşlem başarısız olursa error değeri google.rpc.Status olarak ayarlanır.

Bir 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 değerine ve response türü analyticsDetails olduğu için FirebaseProject, belirtilen Google Analytics hesabına bağlandı. Operation, tamamlandıktan sonra otomatik olarak silinir.