Firebase Management REST API, bir projenin Firebase kaynakları ve Firebase uygulamaları 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ı 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 atlayabilirsiniz:
- Projenize Firebase hizmetleri ekleme
- Firebase uygulamalarını Firebase projenize ekleme
- Firebase projenizi bir Google Analytics hesabına bağlama
Bu sayfadaki adımları uygulamadan önce API'yi etkinleştirdiğinizden emin olun.
Firebase Management API için erişim yönetimi hakkında bilgi edinmek isterseniz 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ştirme
Henüz yapmadıysanız Google Cloud projenizle kullanmak için Firebase Management API'yi etkinleştirmeniz gerekir.
- Google API'leri konsolunda Firebase Management API sayfasını açın.
- İstendiğinde Google Cloud projenizi seçin.
- 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
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'yı kullanın:
import { initializeApp, applicationDefault } from "firebase-admin/app";
initializeApp();
async function getAccessToken() {
try {
const accessToken = await applicationDefault().getAccessToken();
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.
Aşağıda, Node.js için kullanılabilir Google Cloud projelerinin listesini isteyen bir örnek 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ının yanıt gövdesi, ProjectInfo nesnelerinin bir listesini içerir. Proje listesi çok uzunsa yanıt gövdesi, projelerin sonraki sayfasını almak için sorgu parametresi olarak kullanabileceğiniz bir nextPageToken da içerir.
availableProjects.list çağrısının örnek yanıt gövdesini aşağıda bulabilirsiniz:
{
"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 vardır. project alanının, bir proje için dünya genelinde benzersiz kaynak adını sağladığını unutmayın.
Projenize Firebase hizmetleri eklemek veya uygulama eklemek için availableProjects.list tarafından döndürülen yanıtta listelenen herhangi bir project değerini kullanabilirsiniz.
Sonraki bölümde, projects/first-gcp-project kaynak adını kullanarak First Cloud Project projesine Firebase hizmetlerini ekleyeceğiz.
Projenize Firebase hizmetleri ekleme
Google Cloud projeleri, Firebase'in sunduğu hizmetlerden yararlanabilir. Bu bölümde, mevcut Google Cloud projenize Firebase hizmetlerini programatik olarak nasıl ekleyeceğinizi öğreneceksiniz. Firebase hizmetlerini Firebase konsolundaki mevcut Google Cloud projenize de ekleyebilirsiniz.
İSTE
projects.addFirebase numaralı telefonu arayın.
Bu çağrının istek gövdesi boş olmalıdır.
Node.js için Firebase hizmetlerini Google Cloud projenize eklemeye yönelik 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 çağrısının sonucu bir Operation nesnesidir. 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ünde olana kadar işlemde operations.get yöntemini ç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 şu şekildedir:
{
"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ü FirebaseProject olduğundan Google Cloud projesinde artık Firebase hizmetleri var. Yanıtta, yeni oluşturduğunuz FirebaseProject ile ilgili diğer faydalı bilgiler de (ör. projectNumber ve varsayılan resources) yer alır. Operation, işlem 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, Firebase uygulamalarını mevcut FirebaseProject hesabınıza programatik olarak nasıl ekleyeceğinizi öğreneceksiniz. Firebase uygulamalarını Firebase konsolundaki mevcut Firebase projenize de ekleyebilirsiniz.
Firebase projenize eklemek için 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 şu şekilde oluşturabilirsiniz:
Gerekli:
bundleId: iOS uygulamasının iOS Uygulama Mağazası'nda görünecek 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, uygulamayı daha sonra Firebase Console'da bulmak 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 birappStoreIdbelirtin.
Örneğimizdeki 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 örneğini 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 çağrısının sonucu bir Operation nesnesidir. 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 IosApp türünde olana kadar işlemde operations.get yöntemini ç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 şu şekildedir:
{
"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'ye sahip. Yanıt, yeni oluşturulan Firebase iOS uygulamanızla ilgili benzersiz Firebase appId gibi diğer faydalı bilgileri de içerir. Operation, tamamlandıktan sonra otomatik olarak silinir.
Android
Mevcut Firebase projenize bir Firebase Android uygulaması ekleyebilirsiniz.
İSTE
projects.androidApps.create numaralı telefonu arayın.
İstek gövdenizi şu şekilde oluşturabilirsiniz:
Gerekli:
packageName: Android uygulamasının Google Play Console'da görünecek 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ğimizdeki istek gövdesinde packageName ve displayName kullanacağız:
{
"displayName": "My Firebase Android App"
"packageName": "com.firebase.android"
}
Aşağıda, Firebase projenize Firebase Android uygulaması eklemek için Node.js örneği verilmiştir:
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 nesnesidir. 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 AndroidApp türünde olana kadar işlemde operations.get yöntemini ç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 şu şekildedir:
{
"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'ye sahip. Yanıt, yeni oluşturulan Firebase Android uygulamanızla ilgili başka faydalı bilgiler de içerir. Örneğin, benzersiz Firebase appId. Operation, tamamlandıktan sonra otomatik olarak silinir.
SHA sertifikaları ekleme
projects.androidApps.sha.create yöntemini çağırarak mevcut Firebase Android uygulamalarına SHA sertifikaları ekleyebilirsiniz.
Bu yöntem çağrısının istek gövdesinde boş bir name alanı olmalıdır.
Bu çağrının sonucu, yeni oluşturulan bir ShaCertificate örneğidir.
projects.androidApps.sha.create yöntemini çağırırken 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 sayfasını ziyaret edin.
Web
Mevcut Firebase projenize bir Firebase web uygulaması ekleyebilirsiniz.
İSTE
projects.webApps.create numaralı telefonu arayın.
İstek gövdenizi şu şekilde oluşturabilirsiniz:
İsteğe bağlı:
displayName: Uygulamanın kullanıcı tarafından atanan görünen adı. Bu değer, uygulamanızı daha sonra Firebase Console'da bulmak için kullanışlıdır.
Önerilmeyen:
appUrls: Uygulamanın barındırıldığı tam URL'ler. Bir Firebase web uygulaması bir 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 bir displayName belirteceğiz:
{
"displayName": "My Firebase Web App"
}
Firebase projenize Firebase web uygulaması eklemek için Node.js örneğini 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 çağrısının sonucu bir Operation nesnesidir. 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 WebApp türünde olana kadar işlemde operations.get yöntemini ç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 şu şekildedir:
{
"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ü bir WebApp olduğundan FirebaseProject artık bir WebApp değerine sahip. Yanıtta, yeni oluşturulan Firebase web uygulamanızla ilgili diğer yararlı bilgiler de (ör. benzersiz Firebase appId) yer alır. Operation, tamamlandıktan sonra otomatik olarak silinir.
Firebase projenizi bir Google Analytics hesabına bağlama (isteğe bağlı)
Mevcut bir Google Analytics hesabını mevcut FirebaseProject hesabınıza programatik olarak bağlayabilirsiniz. Mevcut Firebase projenizi Google Analytics'e
Proje Ayarları'nın Entegrasyonlar
sekmesinden de bağlayabilirsiniz.
projects.addGoogleAnalytics çağrısı için analytics_resource gerekir. Bu, analyticsAccountId veya analyticsPropertyId olabilir:
Belirtilen hesapta yeni bir Google Analytics mülkü oluşturmak ve yeni mülkü Firebase projenizle ilişkilendirmek için mevcut bir
analyticsAccountIdbelirtin.Google Analytics mülkünü Firebase projenizle ilişkilendirmek için mevcut bir
analyticsPropertyIdbelirtin.
analyticsAccountId ve mevcut analyticsPropertyId bilgilerinizi Google Analytics web sitesinde bulabilirsiniz.
projects.addGoogleAnalytics numarasını aradığınızda:
İlk kontrolde, Google Analytics mülkündeki mevcut veri akışlarının
FirebaseProjectprojenizdeki mevcut Firebase uygulamalarına karşılık gelip gelmediği belirlenir (veri akışıyla ilişkilipackageNameveyabundleIdtemel alınır). Ardından, uygun şekilde veri akışları ve uygulamalar bağlanır. Bu otomatik bağlantı oluşturma işleminin yalnızca Android uygulamaları ve iOS uygulamaları için geçerli olduğunu unutmayın.Firebase uygulamalarınız için karşılık gelen veri akışı bulunamazsa her bir Firebase uygulamanız 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 uygulaması için her zaman yeni bir veri akışı sağlanır.
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ğlar ve yeni mülkü FirebaseProject ile ilişkilendirir.
{
"analyticsAccountId": "<your-google-analytics-account-id>"
}
Aşağıda, bir Firebase projesini Google Analytics hesabına bağlamak için Node.js örneği 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 çağrısının sonucu bir Operation nesnesidir. 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, analyticsDetails türünde olana kadar işlemde operations.get yöntemini ç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 şu şekildedir:
{
"name": "operations/...",
"none": true,
"response": {
"@type": "type.googleapis.com/google.firebase.service.v1beta1.AnalyticsDetails",
"analyticsProperty": [
{
"id": "...",
"displayName": "..."
}
],
"streamMappings": [
{
"app": "...",
"streamId": "...",
"measurementId": "..."
}
]
}
}
done doğru ve response türü analyticsDetails olduğundan FirebaseProject artık belirtilen Google Analytics hesabına bağlı. Operation, tamamlandıktan sonra otomatik olarak silinir.