Admin SDK, ayrıcalıklı ortamlardan Firebase ile etkileşime geçerek aşağıdaki gibi işlemleri gerçekleştirmenize olanak tanıyan bir dizi sunucu kitaplığıdır:
- Tam yönetici ayrıcalıklarıyla Realtime Database verilerini okuyun ve yazın.
- Firebase Cloud Messaging sunucu protokollerine alternatif ve basit bir yaklaşım kullanarak Firebase Cloud Messaging mesajlarını programatik olarak gönderin.
- Firebase kimlik doğrulama jetonları oluşturma ve doğrulama
- Firebase projelerinizle ilişkili Cloud Storage paketleri ve Cloud Firestore veritabanları gibi Google Cloud kaynaklarına erişin.
- Kullanıcı verilerini aramak veya kimlik doğrulama için bir kullanıcının e-posta adresini değiştirmek gibi işlemler yapmak üzere kendi basitleştirilmiş Yönetici Konsolunuzu oluşturun.
Ayrıcalıklı bir ortamdan (sunucu gibi) yönetici erişimi yerine son kullanıcı erişimi için istemci olarak Node.js SDK'sını (örneğin, Node.js masaüstü veya IoT uygulamasında) kullanmak istiyorsanız istemci JavaScript SDK'sını ayarlama talimatlarını uygulamanız gerekir.
Her dilde hangi Firebase özelliklerinin desteklendiğini gösteren bir özellik matrisi aşağıda verilmiştir:
Bu kullanımlara yönelik Yönetici SDK'sı entegrasyonu hakkında daha fazla bilgi edinmek için ilgili Realtime Database, FCM, Kimlik Doğrulama, Remote Config ve Cloud Storage belgelerini inceleyin. Bu sayfanın geri kalanında, Admin SDK'nın temel kurulumuna odaklanılmıştır.
Ön koşullar
Bir sunucu uygulamanız olduğundan emin olun.
Sunucunuzun, kullandığınız Yönetici SDK'sına bağlı olarak aşağıdakileri çalıştırdığından emin olun:
- Yönetici Node.js SDK'sı: Node.js 14+ (Node.js 18 ve sonraki sürümleri önerilir)
Node.js 14 ve 16 desteği kullanımdan kaldırılmıştır. - Yönetici Java SDK'sı — Java 8+
- Yönetici Python SDK'sı — Python 3.7+ (Python 3.8+ önerilir)
Python 3.7 desteği kullanımdan kaldırılmıştır. - Admin Go SDK'sı — Go 1.20 ve üzeri
- Yönetici .NET SDK'sı: .NET Framework 4.6.2+ veya .NET 6.0+ için .NET Standard 2.0
- Yönetici Node.js SDK'sı: Node.js 14+ (Node.js 18 ve sonraki sürümleri önerilir)
Firebase projesi ve hizmet hesabı oluşturun
Firebase Admin SDK'yı kullanmak için şunlara ihtiyacınız vardır:
- Bir Firebase projesi.
- Firebase ile iletişim kurmak için kullanılan bir Firebase Admin SDK hizmet hesabı. Bu hizmet hesabı, Firebase projesi oluşturduğunuzda veya Firebase'i bir Google Cloud projesine eklediğinizde otomatik olarak oluşturulur.
- Hizmet hesabınızın kimlik bilgilerini içeren bir yapılandırma dosyası.
Halihazırda 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 sayfasını ziyaret edin.
SDK'yı ekle
Yeni bir proje oluşturuyorsanız SDK'yı seçtiğiniz dilde yüklemeniz gerekir.
Node.js
Firebase Admin Node.js SDK'sı npm'de kullanılabilir. package.json
dosyanız yoksa npm init
aracılığıyla bir tane oluşturun. Sonra, firebase-admin
npm paketini yükleyin ve package.json
cihazınıza kaydedin:
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
:
import { initializeApp } from 'firebase-admin/app';
Java
Firebase Admin Java SDK'sı, Maven merkezi deposunda yayınlandı.
Kitaplığı yüklemek için build.gradle
dosyanızda bağımlılık olarak tanımlayın:
dependencies {
implementation 'com.google.firebase:firebase-admin:9.3.0'
}
Uygulamanızı derlemek için Maven'ı kullanıyorsanız pom.xml
sayfanıza aşağıdaki bağımlılığı ekleyebilirsiniz:
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.3.0</version>
</dependency>
Python
Firebase Admin Python SDK'sına pip üzerinden ulaşabilirsiniz.
sudo
aracılığıyla tüm kullanıcılar için kitaplığı yükleyebilirsiniz:
sudo pip install firebase-admin
Alternatif olarak, --user
işaretini ileterek kitaplığı yalnızca geçerli kullanıcı için yükleyebilirsiniz:
pip install --user firebase-admin
Go
Go Admin SDK'sı, 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.14.1
C#
.NET Admin SDK, .NET paket yöneticisi kullanılarak yüklenebilir:
Install-Package FirebaseAdmin -Version 3.0.0
Alternatif olarak, dotnet
komut satırı yardımcı programını kullanarak da yükleyebilirsiniz:
dotnet add package FirebaseAdmin --version 3.0.0
Alternatif olarak, .csproj
dosyanıza aşağıdaki paket referansı girişini ekleyerek de yükleyebilirsiniz:
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="3.0.0" />
</ItemGroup>
SDK'yı başlatma
Firebase projesi oluşturduktan sonra SDK'yı Google Uygulaması Varsayılan Kimlik Bilgileri ile başlatabilirsiniz. Google ortamlarında varsayılan kimlik bilgisi araması, ortam değişkenleri veya başka yapılandırmalar sağlamaya gerek kalmadan tamamen otomatik olduğundan, Cloud Run, App Engine ve Cloud Functions gibi Google ortamlarında çalışan uygulamalar için SDK'yı başlatmanın bu yöntemi önemle tavsiye edilir.
Realtime Database, Cloud Storage veya Cloud Functions gibi hizmetler için isteğe bağlı olarak başlatma seçeneklerini belirtmek amacıyla FIREBASE_CONFIG
ortam değişkenini kullanın. FIREBASE_CONFIG
değişkeninin içeriği {
ile başlarsa 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'yı kullanabilirsiniz:
- Özel kimlik doğrulama uygulama
- Firebase Authentication kullanıcılarınızı yönetme
- Realtime Database'den veri okuma ve yazma
- Firebase Cloud Messaging mesajları gönderme
OAuth 2.0 yenileme jetonu kullanma
Yönetici SDK'si, Google OAuth2 yenileme jetonuyla kimlik doğrulaması yapmanı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"),
});
Google dışı ortamlarda SDK'yı başlatma
Varsayılan kimlik bilgisi aramasının tamamen otomatikleştirilemediği Google dışı bir sunucu ortamında çalışıyorsanız SDK'yı dışa aktarılmış bir hizmet hesabı anahtar dosyasıyla başlatabilirsiniz.
Firebase projeleri, Google hizmet hesaplarını destekler. Bu hesapları, uygulama sunucunuzdan veya güvenilir ortamınızdan Firebase sunucusu API'lerini çağırmak için kullanabilirsiniz. Kodları yerel olarak geliştiriyor veya uygulamanızı şirket içinde dağıtıyorsanız sunucu isteklerini yetkilendirmek için bu hizmet hesabı aracılığıyla edinilen kimlik bilgilerini kullanabilirsiniz.
Bir hizmet hesabının kimliğini doğrulamak ve bu hesabı 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 ve ardından Anahtar Oluştur'u tıklayarak onaylayın.
Anahtarı içeren JSON dosyasını güvenli bir şekilde depolayın.
Bir hizmet hesabı aracılığıyla yetkilendirme yaparken kimlik bilgilerini uygulamanıza sağlamak için iki seçeneğiniz vardır. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayabilir veya kodda hizmet hesabı anahtarına giden yolu açıkça geçirebilirsiniz. İ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
Powerpoint ile:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Yukarıdaki adımları tamamlamanızın ardından Uygulama Varsayılan Kimlik Bilgileri (ADC), kimlik bilgilerinizi dolaylı 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 çok uygulamayı başlatma
Çoğu durumda yalnızca tek bir varsayılan uygulamayı ilk kullanıma hazırlamanız yeterlidir. İlgili uygulamanın dışındaki 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ı aynı anda birden fazla uygulama oluşturmanızı gerektirir. Örneğin, bir Firebase projesinin Realtime Database'inden gelen verileri okumak ve başka bir proje için özel jetonlar kaydetmek isteyebilirsiniz. İsterseniz iki uygulamanın kimliğini ayrı kimlik bilgileriyle doğrulamak da isteyebilirsiniz. Firebase SDK'sı, her birinin kendi yapılandırma bilgilerine sahip birden çok uygulamayı aynı anda oluşturmanıza olanak tanı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);
Gerçek Zamanlı Veritabanı ve Kimlik Doğrulaması için kapsamları ayarla
Gerçek Zamanlı Veritabanı veya Kimlik Doğrulama için Google Uygulaması Varsayılan Kimlik Bilgilerine sahip bir Google Compute Engine sanal makinesi kullanıyorsanız doğru erişim kapsamlarını da ayarladığınızdan emin olun.
Gerçek Zamanlı Veritabanı ve Kimlik Doğrulaması için userinfo.email
ve cloud-platform
ya da firebase.database
ile biten kapsamlara ihtiyacınız vardır. 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
Yönetici SDK'sını gcloud auth application-default login
çalıştırarak elde edilen Google Uygulaması Varsayılan Kimlik Bilgileri ile yerel olarak test ederken Firebase Authentication'ı kullanmak için aşağıdaki nedenlerle ek değişiklikler 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 bir çözüm olarak kendi OAuth 2.0 istemci kimliğinizi kullanarak gcloud'da Google Uygulaması Varsayılan Kimlik Bilgilerini 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şlatılırken açıkça belirtebilir veya yalnızca GOOGLE_CLOUD_PROJECT
ortam değişkenini kullanabilirsiniz. ikincisi ise 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ı keşfedin.
Node.js, Java ve Python için GitHub'da açık kaynak kodu keşfedin.
Admin SDK'yı oluşturan kişilerden birinin Admin SDK'sı ile ilgili blog yayınlarını okuyun. Örneğin: Firestore ve Firebase'e proxy sunucu üzerinden erişme.
Uygulamanıza Firebase özellikleri ekleyin:
- Cloud Functions ile sunucusuz bir arka uç yazın.
- Realtime Database ile veya Cloud Storage ile blob verilerini depolayın.
- Cloud Messaging ile bildirim alın.