Admin SDK, ayrıcalıklı ortamlardan Firebase ile etkileşime geçerek aşağıdaki gibi işlemler yapmanızı sağlayan bir dizi sunucu kitaplığıdır:
- Toplu veri yönetimi ve diğer işlemler için Firebase Data Connect hizmetinde tam yönetici ayrıcalıklarıyla sorgu ve mutasyon gerçekleştirin.
- Tam yönetici ayrıcalıklarıyla Realtime Database verilerini okuma ve yazma
- Firebase Cloud Messaging sunucu protokollerine basit ve alternatif bir yaklaşım kullanarak Firebase Cloud Messaging iletilerini programatik olarak gönderin.
- Firebase kimlik doğrulama jetonları oluşturun ve doğrulayın.
- Firebase projelerinizle ilişkili Cloud Storage paketleri ve Cloud Firestore veritabanları gibi Google Cloud kaynaklara erişin.
- Kullanıcı verilerini arama veya kullanıcının e-posta adresini kimlik doğrulama için değiştirme gibi işlemleri yapmak üzere kendi basitleştirilmiş yönetici konsolunuzu oluşturun.
Node.js SDK'yı ayrıcalıklı bir ortamdan (ör. sunucu) yönetici erişimi yerine son kullanıcı erişimi için istemci olarak (ör. Node.js masaüstü veya IoT uygulamasında) kullanmak istiyorsanız istemci JavaScript SDK'sını ayarlama talimatlarını uygulamanız gerekir.
Hangi Firebase özelliklerinin hangi dillerde desteklendiğini gösteren özellik matrisini aşağıda bulabilirsiniz:
Bu kullanımlar için Admin SDK entegrasyonu hakkında daha fazla bilgi edinmek istiyorsanız ilgili Realtime Database, FCM, Authentication, Remote Config ve Cloud Storage belgelerine bakın. Bu sayfanın geri kalanında Admin SDK için temel kurulum ele alınmaktadır.
Ön koşullar
Bir sunucu uygulamanız olduğundan emin olun.
Sunucunuzun, kullandığınız Admin SDK'ya bağlı olarak aşağıdakileri çalıştırdığından emin olun:
- Yönetici Node.js SDK'sı (Node.js 18 ve sonraki sürümler)
- Admin Java SDK'sı (Java 8 ve sonraki sürümler)
- Admin Python SDK: Python 3.9+ (Python 3.10+ önerilir)
Python 3.9 desteği kullanımdan kaldırılmıştır. - Admin Go SDK'sı — Go 1.23 ve sonraki sürümler
- Yönetici .NET SDK'sı: .NET 6.0+ için.NET Framework 4 .6.2+ veya .NET Standard 2.0
Firebase projesi ve hizmet hesabı oluşturma
Firebase Admin SDK özelliğini kullanmak için aşağıdakilere ihtiyacınız vardır:
- Bir Firebase projesi.
- Firebase ile iletişim kurmak için Firebase Admin SDK hizmet hesabı. Bu hizmet hesabı, Firebase projesi oluşturduğunuzda veya Google Cloud projesine Firebase eklediğinizde otomatik olarak oluşturulur.
- Hizmet hesabınızın kimlik bilgilerini içeren bir yapılandırma dosyası.
Henüz bir Firebase projeniz yoksa Firebase konsolunda bir proje oluşturmanız gerekir. Firebase projeleri hakkında daha fazla bilgi edinmek için Firebase projelerini anlama başlıklı makaleyi inceleyin.
SDK'yı ekleyin
Yeni bir proje oluşturuyorsanız istediğiniz dilin SDK'sını yüklemeniz gerekir.
Node.js
Firebase Admin Node.js SDK'sı npm'de kullanılabilir. Henüz bir package.json
dosyanız yoksa npm init
üzerinden oluşturun. Ardından, firebase-admin
npm paketini yükleyin ve firebase-admin
cihazınıza kaydedin:package.json
npm install firebase-admin --save
Modülü uygulamanızda kullanmak için herhangi bir JavaScript dosyasından require
:
const { initializeApp } = require('firebase-admin/app');
ES2015 kullanıyorsanız modülü import
yapabilirsiniz:
import { initializeApp } from 'firebase-admin/app';
Java
Firebase Admin Java SDK'sı, Maven merkezi deposunda yayınlanır.
Kitaplığı yüklemek için build.gradle
dosyanızda bağımlı kaynak olarak tanımlayın:
dependencies {
implementation 'com.google.firebase:firebase-admin:9.5.0'
}
Uygulamanızı oluşturmak için Maven kullanıyorsanız pom.xml
dosyanıza aşağıdaki bağımlılığı ekleyebilirsiniz:
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.5.0</version>
</dependency>
Python
Firebase Admin Python SDK'sı pip aracılığıyla kullanılabilir.
Kitaplığı sudo
aracılığıyla tüm kullanıcılar için yükleyebilirsiniz:
sudo pip install firebase-admin
Alternatif olarak, --user
işaretini ileterek kitaplığı yalnızca mevcut kullanıcı için yükleyebilirsiniz:
pip install --user firebase-admin
Go
Go Admin SDK, go get
yardımcı programı kullanılarak yüklenebilir:
# Install the latest version:
go get firebase.google.com/go/v4@latest
# Or install a specific version:
go get firebase.google.com/go/v4@4.17.0
C#
.NET Admin SDK, .NET paket yöneticisi kullanılarak yüklenebilir:
Install-Package FirebaseAdmin -Version 3.3.0
Alternatif olarak, dotnet
komut satırı yardımcı programını kullanarak yükleyin:
dotnet add package FirebaseAdmin --version 3.3.0
Dilerseniz aşağıdaki paket referansı girişini .csproj
dosyanıza ekleyerek de yükleyebilirsiniz:
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="3.3.0" />
</ItemGroup>
SDK'yı başlatma
Firebase projesi oluşturduktan sonra SDK'yı Google Application Default Credentials ile başlatabilirsiniz. Google ortamlarında varsayılan kimlik bilgisi araması tamamen otomatik olduğundan ve ortam değişkenleri veya başka bir yapılandırma sağlamaya gerek olmadığından, SDK'yı başlatmanın bu yolu, Firebase App Hosting, Cloud Run, App Engine ve Cloud Functions for Firebase gibi Google ortamlarında çalışan uygulamalar için önemle tavsiye edilir.
İsteğe bağlı olarak Realtime Database, Cloud Storage veya Cloud Functions gibi hizmetler için başlatma seçeneklerini belirtmek üzere FIREBASE_CONFIG
ortam değişkenini kullanın. FIREBASE_CONFIG
değişkeninin içeriği {
ile başlıyorsa JSON nesnesi olarak ayrıştırılır. Aksi takdirde SDK, dizenin seçenekleri içeren bir JSON dosyasının yolu olduğunu varsayar.
Node.js
const app = initializeApp();
Java
FirebaseApp.initializeApp();
Python
default_app = firebase_admin.initialize_app()
Go
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create();
Başlatıldıktan sonra, aşağıdaki görev türlerini gerçekleştirmek için Admin SDK simgesini kullanabilirsiniz:
- Özel kimlik doğrulama uygulama
- Firebase Authentication kullanıcılarınızı yönetme
- Bir Firebase Data Connect hizmette yönetim sorguları ve mutasyonları gerçekleştirme.
- Realtime Database veritabanındaki verileri okuma ve yazma
- Firebase Cloud Messaging mesajı gönderme
OAuth 2.0 yenileme jetonu kullanma
Admin SDK, Google OAuth2 yenileme jetonuyla kimlik doğrulamanıza olanak tanıyan bir kimlik bilgisi de sağlar:
Node.js
const myRefreshToken = '...'; // Get refresh token from OAuth2 flow
initializeApp({
credential: refreshToken(myRefreshToken),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
Java
FileInputStream refreshToken = new FileInputStream("path/to/refreshToken.json");
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(refreshToken))
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Python
cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)
Go
opt := option.WithCredentialsFile("path/to/refreshToken.json")
config := &firebase.Config{ProjectID: "my-project-id"}
app, err := firebase.NewApp(context.Background(), config, opt)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.FromFile("path/to/refreshToken.json"),
});
SDK'yı Google harici ortamlarda başlatma
Varsayılan kimlik bilgilerinin aranmasının tam olarak otomatikleştirilemediği bir Google dışı sunucu ortamında çalışıyorsanız SDK'yı dışa aktarılmış bir hizmet hesabı anahtar dosyasıyla başlatabilirsiniz.
Firebase projeleri, uygulamanızın sunucusundan veya güvenilir ortamdan Firebase sunucu API'lerini çağırmak için kullanabileceğiniz Google hizmet hesaplarını destekler. Kodu yerel olarak geliştiriyorsanız veya uygulamanızı şirket içinde dağıtıyorsanız sunucu isteklerini yetkilendirmek için bu hizmet hesabı üzerinden alınan kimlik bilgilerini kullanabilirsiniz.
Bir hizmet hesabının kimliğini doğrulamak ve Firebase hizmetlerine erişmesi için yetkilendirmek üzere JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir.
Hizmet hesabınız için özel anahtar dosyası oluşturmak üzere:
Firebase konsolunda Ayarlar > Hizmet Hesapları'nı açın.
Yeni Özel Anahtar Oluştur'u tıklayın, ardından Anahtar Oluştur'u tıklayarak onaylayın.
Anahtarı içeren JSON dosyasını güvenli bir şekilde saklayın.
Bir hizmet hesabı üzerinden yetkilendirirken uygulamanıza kimlik bilgilerini sağlamak için iki seçeneğiniz vardır. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayabilir veya hizmet hesabı anahtarının yolunu kodda açıkça iletebilirsiniz. İlk seçenek daha güvenlidir ve kesinlikle önerilir.
Ortam değişkenini ayarlamak için:
GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini hizmet hesabı anahtarınızı içeren JSON dosyasının dosya yoluna ayarlayın. Bu değişken yalnızca mevcut kabuk oturumunuz için geçerlidir. Bu nedenle, yeni bir oturum açarsanız değişkeni tekrar ayarlayın.
Linux veya macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
PowerShell ile:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Yukarıdaki adımları tamamladıktan sonra, Uygulama Varsayılan Kimlik Bilgileri (ADC) kimlik bilgilerinizi örtülü olarak belirleyebilir. Bu sayede, Google dışı ortamlarda test yaparken veya çalıştırırken hizmet hesabı kimlik bilgilerini kullanabilirsiniz.
SDK'yı gösterildiği gibi başlatın:
Node.js
initializeApp({
credential: applicationDefault(),
databaseURL: 'https://<DATABASE_NAME>.firebaseio.com'
});
Java
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setDatabaseUrl("https://<DATABASE_NAME>.firebaseio.com/")
.build();
FirebaseApp.initializeApp(options);
Python
default_app = firebase_admin.initialize_app()
Go
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
ProjectId = "my-project-id",
});
Birden fazla uygulamayı başlatma
Çoğu durumda yalnızca tek bir varsayılan uygulamayı başlatmanız gerekir. Bu uygulamadaki hizmetlere iki eşdeğer şekilde erişebilirsiniz:
Node.js
// Initialize the default app
const defaultApp = initializeApp(defaultAppConfig);
console.log(defaultApp.name); // '[DEFAULT]'
// Retrieve services via the defaultApp variable...
let defaultAuth = getAuth(defaultApp);
let defaultDatabase = getDatabase(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = getAuth();
defaultDatabase = getDatabase();
Java
// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);
System.out.println(defaultApp.getName()); // "[DEFAULT]"
// Retrieve services by passing the defaultApp variable...
FirebaseAuth defaultAuth = FirebaseAuth.getInstance(defaultApp);
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = FirebaseAuth.getInstance();
defaultDatabase = FirebaseDatabase.getInstance();
Python
# Import the Firebase service
from firebase_admin import auth
# Initialize the default app
default_app = firebase_admin.initialize_app(cred)
print(default_app.name) # "[DEFAULT]"
# Retrieve services via the auth package...
# auth.create_custom_token(...)
Go
// Initialize default app
app, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Access auth service from the default app
client, err := app.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
C#
// Initialize the default app
var defaultApp = FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
});
Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
// Retrieve services by passing the defaultApp variable...
var defaultAuth = FirebaseAuth.GetAuth(defaultApp);
// ... or use the equivalent shorthand notation
defaultAuth = FirebaseAuth.DefaultInstance;
Bazı kullanım alanlarında aynı anda birden fazla uygulama oluşturmanız gerekir. Örneğin, bir Firebase projesinin Realtime Database verilerini okumak ve başka bir proje için özel jetonlar oluşturmak isteyebilirsiniz. Alternatif olarak, iki uygulamayı ayrı kimlik bilgileriyle doğrulamak isteyebilirsiniz. Firebase SDK, aynı anda birden çok uygulama oluşturmanıza olanak tanır. Bu uygulamaların her birinin kendi yapılandırma bilgileri vardır.
Node.js
// Initialize the default app
initializeApp(defaultAppConfig);
// Initialize another app with a different config
var otherApp = initializeApp(otherAppConfig, 'other');
console.log(getApp().name); // '[DEFAULT]'
console.log(otherApp.name); // 'other'
// Use the shorthand notation to retrieve the default app's services
const defaultAuth = getAuth();
const defaultDatabase = getDatabase();
// Use the otherApp variable to retrieve the other app's services
const otherAuth = getAuth(otherApp);
const otherDatabase = getDatabase(otherApp);
Java
// Initialize the default app
FirebaseApp defaultApp = FirebaseApp.initializeApp(defaultOptions);
// Initialize another app with a different config
FirebaseApp otherApp = FirebaseApp.initializeApp(otherAppConfig, "other");
System.out.println(defaultApp.getName()); // "[DEFAULT]"
System.out.println(otherApp.getName()); // "other"
// Use the shorthand notation to retrieve the default app's services
FirebaseAuth defaultAuth = FirebaseAuth.getInstance();
FirebaseDatabase defaultDatabase = FirebaseDatabase.getInstance();
// Use the otherApp variable to retrieve the other app's services
FirebaseAuth otherAuth = FirebaseAuth.getInstance(otherApp);
FirebaseDatabase otherDatabase = FirebaseDatabase.getInstance(otherApp);
Python
# Initialize the default app
default_app = firebase_admin.initialize_app(cred)
# Initialize another app with a different config
other_app = firebase_admin.initialize_app(cred, name='other')
print(default_app.name) # "[DEFAULT]"
print(other_app.name) # "other"
# Retrieve default services via the auth package...
# auth.create_custom_token(...)
# Use the `app` argument to retrieve the other app's services
# auth.create_custom_token(..., app=other_app)
Go
// Initialize the default app
defaultApp, err := firebase.NewApp(context.Background(), nil)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Initialize another app with a different config
opt := option.WithCredentialsFile("service-account-other.json")
otherApp, err := firebase.NewApp(context.Background(), nil, opt)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
// Access Auth service from default app
defaultClient, err := defaultApp.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
// Access auth service from other app
otherClient, err := otherApp.Auth(context.Background())
if err != nil {
log.Fatalf("error getting Auth client: %v\n", err)
}
C#
// Initialize the default app
var defaultApp = FirebaseApp.Create(defaultOptions);
// Initialize another app with a different config
var otherApp = FirebaseApp.Create(otherAppConfig, "other");
Console.WriteLine(defaultApp.Name); // "[DEFAULT]"
Console.WriteLine(otherApp.Name); // "other"
// Use the shorthand notation to retrieve the default app's services
var defaultAuth = FirebaseAuth.DefaultInstance;
// Use the otherApp variable to retrieve the other app's services
var otherAuth = FirebaseAuth.GetAuth(otherApp);
Realtime Database ve Authentication için kapsamları ayarlayın
Realtime Database veya Authentication için Google Application Default Credentials ile Google Compute Engine VM kullanıyorsanız doğru erişim kapsamlarını da ayarladığınızdan emin olun.
Realtime Database ve Authentication için userinfo.email
ile biten kapsamlar ve cloud-platform
veya firebase.database
gerekir. Mevcut erişim kapsamlarını kontrol etmek ve değiştirmek için gcloud'u kullanarak aşağıdaki komutları çalıştırın.
gcloud
# Check the existing access scopes
gcloud compute instances describe [INSTANCE_NAME] --format json
# The above command returns the service account information. For example:
"serviceAccounts": [
{
"email": "your.gserviceaccount.com",
"scopes": [
"https://www.googleapis.com/auth/cloud-platform",
"https://www.googleapis.com/auth/userinfo.email"
]
}
],
# Stop the VM, then run the following command, using the service account
# that gcloud returned when you checked the scopes.
gcloud compute instances set-service-account [INSTANCE_NAME] --service-account "your.gserviceaccount.com" --scopes "https://www.googleapis.com/auth/firebase.database,https://www.googleapis.com/auth/userinfo.email"
gcloud son kullanıcı kimlik bilgileriyle test etme
Admin SDK, gcloud auth application-default login
çalıştırılarak elde edilen Google Uygulama Varsayılan Kimlik Bilgileri ile yerel olarak test edilirken aşağıdakiler nedeniyle Firebase Authentication kullanmak için ek değişiklikler yapılması gerekir:
- Firebase Authentication, gcloud OAuth istemci kimliği kullanılarak oluşturulan gcloud son kullanıcı kimlik bilgilerini kabul etmez.
- Firebase Authentication bu tür son kullanıcı kimlik bilgileri için başlatma sırasında proje kimliğinin sağlanmasını gerektirir.
Geçici çözüm olarak, kendi OAuth 2.0 istemci kimliğinizi kullanarak gcloud'da Google Uygulaması Varsayılan Kimlik Bilgileri oluşturabilirsiniz. OAuth istemci kimliği, Masaüstü uygulaması uygulama türünde olmalıdır.
gcloud
gcloud auth application-default login --client-id-file=[/path/to/client/id/file]
Proje kimliğini uygulama başlatma sırasında açıkça belirtebilir veya yalnızca GOOGLE_CLOUD_PROJECT
ortam değişkenini kullanabilirsiniz. İkincisi, kodunuzu test etmek için ek değişiklik yapma ihtiyacını ortadan kaldırır.
Proje kimliğini açıkça belirtmek için:
Node.js
import { initializeApp, applicationDefault } from 'firebase-admin/app';
initializeApp({
credential: applicationDefault(),
projectId: '<FIREBASE_PROJECT_ID>',
});
Java
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.setProjectId("<FIREBASE_PROJECT_ID>")
.build();
FirebaseApp.initializeApp(options);
Python
app_options = {'projectId': '<FIREBASE_PROJECT_ID>'}
default_app = firebase_admin.initialize_app(options=app_options)
Go
config := &firebase.Config{ProjectID: "<FIREBASE_PROJECT_ID>"}
app, err := firebase.NewApp(context.Background(), config)
if err != nil {
log.Fatalf("error initializing app: %v\n", err)
}
C#
FirebaseApp.Create(new AppOptions()
{
Credential = GoogleCredential.GetApplicationDefault(),
ProjectId = "<FIREBASE_PROJECT_ID>",
});
Sonraki adımlar
Firebase hakkında bilgi edinin:
Örnek Firebase uygulamalarını inceleyin.
Node.js, Java ve Python için GitHub'daki açık kaynak kodunu inceleyin.
Admin SDK'ın yaratıcılarından birinin Admin SDK ile ilgili blog yayınlarını okuyun. Örneğin: Proxy sunucusu üzerinden Firestore ve Firebase'e erişme.
Uygulamanıza Firebase özellikleri ekleyin:
- Cloud Functions ile sunucusuz bir arka uç yazın.
- Realtime Database ile bilgi veya Cloud Storage ile blob verilerini depolayın.
- Cloud Messaging ile bildirim alma