Admin SDK, ayrıcalıklı ortamlardan Firebase ile etkileşime girerek aşağıdakiler gibi eylemler gerçekleştirmenizi sağlayan bir dizi sunucu kitaplığıdır:
- Gerçek Zamanlı Veritabanı verilerini tam yönetici ayrıcalıklarıyla okuyun ve yazın.
- Firebase Bulut Mesajlaşma sunucu protokollerine basit, alternatif bir yaklaşım kullanarak Firebase Bulut Mesajlaşma mesajlarını programlı olarak gönderin.
- Firebase kimlik doğrulama belirteçlerini oluşturun ve doğrulayın.
- Firebase projelerinizle ilişkili Cloud Storage paketleri ve Cloud Firestore veritabanları gibi Google Cloud kaynaklarına erişin.
- Kimlik doğrulama için kullanıcı verilerini aramak veya bir kullanıcının e-posta adresini değiştirmek gibi şeyler yapmak için kendi basitleştirilmiş yönetici konsolunuzu oluşturun.
Ayrıcalıklı bir ortamdan (bir sunucu gibi) yönetici erişimi yerine son kullanıcı erişimi için bir istemci olarak (örneğin, bir Node.js masaüstünde veya IoT uygulamasında) Node.js SDK'yı kullanmakla ilgileniyorsanız, bunun yerine , istemci JavaScript SDK'sını kurmak için yönergeleri izlemelisiniz.
Her dilde hangi Firebase özelliklerinin desteklendiğini gösteren bir özellik matrisi aşağıda verilmiştir:
Bu kullanımlar için Admin SDK entegrasyonu hakkında daha fazla bilgi edinmek için ilgili Realtime Database , FCM , Authentication , Remote Config ve Cloud Storage belgelerine bakın. Bu sayfanın geri kalanı, Admin SDK için temel kuruluma odaklanmaktadır.
Önkoşullar
Bir sunucu uygulamanız olduğundan emin olun.
Kullandığınız Yönetici SDK'sına bağlı olarak sunucunuzun aşağıdakileri çalıştırdığından emin olun:
- Yönetici Node.js SDK — Node.js 14+
- Yönetici Java SDK — Java 8+
- Yönetici Python SDK — Python 3.6+ (Python 3.7+ önerilir)
- Admin Go SDK — Go 1.17+
- Yönetici .NET SDK — .NET Framework 4.6.1+ veya .Net Core 2.0+ için .NET Standard 2.0
Bir Firebase projesi ve hizmet hesabı oluşturun
Firebase Admin SDK'yı kullanmak için şunlara ihtiyacınız olacak:
- Bir Firebase projesi.
- Firebase ile iletişim kurmak için bir Firebase Admin SDK hizmet hesabı. Bu hizmet hesabı, bir 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 Anlayın sayfasını ziyaret edin.
SDK'yı ekleyin
Yeni bir proje kuruyorsanız, seçtiğiniz dil için SDK'yı yüklemeniz gerekir.
Node.js
Firebase Admin Node.js SDK, npm'de mevcuttur. Halihazırda bir package.json
dosyanız yoksa, npm init
aracılığıyla bir tane oluşturun. Ardından, firebase-admin
npm paketini yükleyin ve package.json
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
aktarabilirsiniz:
import { initializeApp } from 'firebase-admin/app';
java
Firebase Admin Java SDK, Maven merkezi deposunda yayınlandı. Kitaplığı yüklemek için, onu build.gradle
dosyanızda bir bağımlılık olarak bildirin:
dependencies {
implementation 'com.google.firebase:firebase-admin:9.2.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.2.0</version>
</dependency>
Piton
Firebase Admin Python SDK, pip aracılığıyla kullanılabilir. Kitaplığı tüm kullanıcılar için sudo
aracılığıyla yükleyebilirsiniz:
sudo pip install firebase-admin
Veya --user
bayrağını ileterek kitaplığı yalnızca geçerli kullanıcı için yükleyebilirsiniz:
pip install --user firebase-admin
Gitmek
Go Admin SDK, go install
yardımcı programı kullanılarak kurulabilir:
# Install the latest version:
go install firebase.google.com/go/v4@latest
# Or install a specific version:
go install firebase.google.com/go/v4@4.12.0
C#
.NET Admin SDK, .NET paket yöneticisi kullanılarak kurulabilir:
Install-Package FirebaseAdmin -Version 2.4.0
Alternatif olarak, dotnet
komut satırı yardımcı programını kullanarak kurun:
dotnet add package FirebaseAdmin --version 2.4.0
Veya aşağıdaki paket referans girişini .csproj
dosyanıza ekleyerek kurabilirsiniz:
<ItemGroup>
<PackageReference Include="FirebaseAdmin" Version="2.4.0" />
</ItemGroup>
SDK'yı başlat
Bir Firebase projesi oluşturduktan sonra, SDK'yı Google Application Default Credentials ile başlatabilirsiniz. Varsayılan kimlik bilgileri araması Google ortamlarında tamamen otomatik olduğundan ve ortam değişkenleri veya başka bir yapılandırma sağlamaya gerek olmadığından, Cloud Run, App Engine ve Cloud Functions gibi Google ortamlarında çalışan uygulamalar için SDK'nın bu şekilde başlatılması kesinlikle önerilir.
Gerçek Zamanlı Veritabanı, Bulut Depolama veya Bulut İşlevleri gibi hizmetler için isteğe bağlı olarak başlatma seçeneklerini belirtmek üzere FIREBASE_CONFIG
ortam değişkenini kullanın. FIREBASE_CONFIG
değişkeninin içeriği bir {
ile başlıyorsa, bir JSON nesnesi olarak ayrıştırılacaktı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();
Piton
default_app = firebase_admin.initialize_app()
Gitmek
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 Yönetici SDK'sını kullanabilirsiniz:
- Özel kimlik doğrulaması uygulayın
- Firebase Authentication kullanıcılarınızı yönetin
- Gerçek Zamanlı Veritabanından veri okuma ve yazma
- Firebase Bulut Mesajlaşma mesajları gönderin
OAuth 2.0 yenileme belirteci kullanma
Yönetici SDK'sı ayrıca bir Google OAuth2 yenileme belirteci ile kimlik doğrulamanıza izin veren bir kimlik bilgisi 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);
Piton
cred = credentials.RefreshToken('path/to/refreshToken.json')
default_app = firebase_admin.initialize_app(cred)
Gitmek
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 dışı ortamlarda başlat
Varsayılan kimlik bilgileri aramasının tamamen otomatikleştirilemediği Google dışı bir sunucu ortamında çalışıyorsanız, SDK'yı dışa aktarılan bir hizmet hesabı anahtar dosyasıyla başlatabilirsiniz.
Firebase projeleri, uygulama sunucunuzdan veya güvenilir ortamınızdan Firebase sunucu API'lerini çağırmak için kullanabileceğiniz Google hizmet hesaplarını destekler. Yerel olarak kod geliştiriyorsanız veya uygulamanızı şirket içinde dağıtıyorsanız, sunucu isteklerini yetkilendirmek için bu hizmet hesabı aracılığıyla alınan kimlik bilgilerini kullanabilirsiniz.
Bir hizmet hesabının kimliğini doğrulamak ve Firebase hizmetlerine erişim yetkisi vermek için JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir.
Hizmet hesabınız için bir özel anahtar dosyası oluşturmak üzere:
Firebase konsolunda Ayarlar > Hizmet Hesapları öğesini açın.
Yeni Özel Anahtar Oluştur'a tıklayın, ardından Anahtar Oluştur'a tıklayarak onaylayın.
Anahtarı içeren JSON dosyasını güvenli bir şekilde saklayın.
Bir hizmet hesabı aracılığıyla yetkilendirme yaparken, başvurunuza kimlik bilgilerini sağlamak için iki seçeneğiniz vardır. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayabilir veya kodda hizmet hesabı anahtarının yolunu açıkça iletebilirsiniz. İlk seçenek daha güvenlidir ve şiddetle tavsiye edilir.
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 yeniden ayarlayın.
Linux veya macOS
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
pencereler
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), Google dışı ortamlarda test ederken veya çalıştırırken hizmet hesabı kimlik bilgilerini kullanmanıza izin vererek, kimlik bilgilerinizi dolaylı olarak belirleyebilir.
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);
Piton
default_app = firebase_admin.initialize_app()
Gitmek
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şlat
Çoğu durumda, yalnızca tek bir varsayılan uygulamayı başlatmanız gerekir. Bu uygulamanın dışındaki hizmetlere iki eşdeğer yolla 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();
Piton
# 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(...)
Gitmek
// 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 durumları, aynı anda birden fazla uygulama oluşturmanızı gerektirir. Örneğin, bir Firebase projesinin Gerçek Zamanlı Veritabanındaki verileri okumak ve başka bir proje için özel belirteçler oluşturmak isteyebilirsiniz. Veya iki uygulamanın kimliğini ayrı kimlik bilgileriyle doğrulamak isteyebilirsiniz. Firebase SDK, aynı anda her biri kendi yapılandırma bilgilerine sahip birden çok uygulama 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);
Piton
# 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)
Gitmek
// 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ğrulama için kapsamları ayarlayın
Gerçek Zamanlı Veritabanı veya Kimlik Doğrulama için Google Uygulaması Varsayılan Kimlik Bilgileri ile 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ğrulama için userinfo.email
ve cloud-platform
veya firebase.database
ile biten kapsamlara ihtiyacınız vardır. Mevcut erişim kapsamlarını kontrol etmek ve değiştirmek için gcloud kullanarak aşağıdaki komutları çalıştırın.
bulut
# 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ırılarak elde edilen Google Uygulama 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 Kimlik Doğrulaması, 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, bir Masaüstü uygulaması uygulama türü olmalıdır.
bulut
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 herhangi bir 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);
Piton
app_options = {'projectId': '<FIREBASE_PROJECT_ID>'}
default_app = firebase_admin.initialize_app(options=app_options)
Gitmek
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'daki açık kaynak kodunu keşfedin.
Admin SDK'nın yaratıcılarından birinin Admin SDK ile ilgili blog gönderilerini okuyun. Örneğin: Bir proxy sunucu üzerinden Firestore ve Firebase'e erişim .
Uygulamanıza Firebase özellikleri ekleyin:
- Cloud Functions ile sunucusuz bir arka uç yazın.
- Bilgileri Realtime Database ile veya blob verilerini Cloud Storage ile depolayın.
- Bulut Mesajlaşma ile bildirimler alın.