Firebase Yönetici SDK'sını sunucunuza ekleyin

Yönetici SDK'sı, aşağıdaki gibi işlemleri gerçekleştirmek için Firebase ile ayrıcalıklı ortamlardan etkileşim kurmanıza olanak tanıyan bir dizi sunucu kitaplığıdır:

  • Gerçek Zamanlı Veritabanı verilerini tam yönetici ayrıcalıklarıyla okuyun ve yazın.
  • Firebase Cloud Messaging sunucu protokollerine basit ve alternatif bir yaklaşım kullanarak Firebase Cloud Messaging mesajlarını programlı bir şekilde gönderin.
  • Firebase kimlik doğrulama jetonlarını oluşturun ve doğrulayın.
  • 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 kullanıcının e-posta adresini değiştirmek gibi işlemleri gerçekleştirmek için kendi basitleştirilmiş yönetici konsolunuzu oluşturun.

Ayrıcalıklı bir ortamdan (sunucu gibi) yönetici erişimi yerine, Node.js SDK'sını son kullanıcı erişimi için istemci olarak (örneğin, Node.js masaüstünde veya IoT uygulamasında) kullanmakla ilgileniyorsanız, bunun yerine istemci JavaScript SDK'sını kurma talimatlarını izlemelisiniz.

Her dilde hangi Firebase özelliklerinin desteklendiğini gösteren bir özellik matrisi aşağıda verilmiştir:

Özellik Node.js Java Python Gitmek C#
Özel Token Basımı
Kimlik Jetonu Doğrulaması
Kullanıcı yönetimi
Özel Taleplerle Erişimi Kontrol Edin
Jeton İptalini Yenile
Kullanıcıları İçe Aktar
Oturum Çerez Yönetimi
E-posta Eylem Bağlantıları Oluşturma
SAML/OIDC sağlayıcı yapılandırmalarını yönetme
Çoklu kiralama desteği
Gerçek Zamanlı Veritabanı *
Firebase Bulut Mesajlaşma
FCM Çoklu Yayın
FCM Konu Aboneliklerini Yönetin
Bulut depolama
Bulut Firestore
Bulut Görevleri ile işlevleri sıraya alma
Proje Yönetimi
Güvenlik Kuralları
ML Model Yönetimi
Firebase Uzaktan Yapılandırması
Firebase Uygulama Kontrolü
Firebase Uzantıları

Bu kullanımlara yönelik Yönetici SDK entegrasyonu hakkında daha fazla bilgi edinmek için ilgili Gerçek Zamanlı Veritabanı , FCM , Kimlik Doğrulama , Uzaktan Yapılandırma ve Bulut Depolama belgelerine bakın. Bu sayfanın geri kalanı Admin SDK'nın temel kurulumuna odaklanmaktadır.

Önkoşullar

  • Bir sunucu uygulamanızın 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'sı — Node.js 14+ (Node.js 16+ önerilir)
      Node.js 14 desteği kullanımdan kaldırıldı.
    • Yönetici Java SDK'sı — Java 8+
    • Admin Python SDK — Python 3.7+ (Python 3.8+ önerilir)
      Python 3.7 desteği kullanımdan kaldırıldı.
    • Admin Go SDK'sı — Go 1.17+
    • Admin .NET SDK — .NET Framework 4.6.1+ veya .Net Core 2.0+ için .NET Standard 2.0

Firebase projesi ve hizmet hesabı oluşturun

Firebase Yönetici SDK'sını kullanmak için aşağıdakilere 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ı.

Henüz bir Firebase projeniz yoksa Firebase konsolunda bir tane 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 dilin SDK'sını yüklemeniz gerekir.

Node.js

Firebase Admin Node.js SDK'sı npm'de mevcuttur. Zaten bir package.json dosyanız yoksa npm init aracılığıyla bir tane oluşturun. Ardından firebase-admin npm paketini kurun ve package.json dosyanı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 aktarabilirsiniz:

import { initializeApp } from 'firebase-admin/app';

Java

Firebase Admin Java SDK'sı Maven merkezi deposunda yayınlanır. Kütüphaneyi kurmak 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>

Python

Firebase Admin Python SDK'ya pip yoluyla ulaşılabilir. Kütüphaneyi tüm kullanıcılar için sudo aracılığıyla kurabilirsiniz:

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.13.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 da yükleyin:

dotnet add package FirebaseAdmin --version 2.4.0

Veya aşağıdaki paket referans girişini .csproj dosyanıza ekleyerek yükleyebilirsiniz:

<ItemGroup>
  <PackageReference Include="FirebaseAdmin" Version="2.4.0" />
</ItemGroup>

SDK'yı başlat

Firebase projesi oluşturduktan sonra SDK'yı Google Uygulama Varsayılan Kimlik Bilgileriyle 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ı önemle tavsiye edilir.

Gerçek Zamanlı Veritabanı, Bulut Depolama veya Bulut İşlevleri gibi hizmetlere yönelik başlatma seçeneklerini isteğe bağlı olarak belirlemek için FIREBASE_CONFIG ortam değişkenini kullanın. FIREBASE_CONFIG değişkeninin içeriği { 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();

Python

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:

OAuth 2.0 yenileme jetonu kullanma

Yönetici SDK'sı ayrıca 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)

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ın

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 elde edilen kimlik bilgilerini kullanabilirsiniz.

Bir hizmet hesabının kimliğini doğrulamak ve Firebase hizmetlerine erişmesine izin vermek için JSON biçiminde bir özel anahtar dosyası oluşturmanız gerekir.

Hizmet hesabınız için özel bir anahtar dosyası oluşturmak için:

  1. Firebase konsolunda Ayarlar > Hizmet Hesapları'nı açın.

  2. Yeni Özel Anahtar Oluştur'u tıklayın ve ardından Anahtar Oluştur'u tıklayarak onaylayın.

  3. Anahtarı içeren JSON dosyasını güvenli bir şekilde saklayın.

Bir hizmet hesabı aracılığıyla yetkilendirme yaparken, uygulamanıza kimlik bilgileri sağlamak için iki seçeneğiniz vardır. GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini ayarlayabilir veya koddaki 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; dolayısıyla 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'le:

$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 dolaylı olarak belirleyebilir ve Google dışı ortamlarda test yaparken veya çalıştırırken hizmet hesabı kimlik bilgilerini kullanmanıza olanak tanır.

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()

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 fazla 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();

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(...)

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 fazla 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);

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)

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ı ayarlama

Gerçek Zamanlı Veritabanı veya Kimlik Doğrulama için Google Uygulama Varsayılan Kimlik Bilgilerine sahip bir Google Compute Engine VM 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'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'yı gcloud auth application-default login komutunu çalıştırarak elde edilen Google Uygulama Varsayılan Kimlik Bilgileriyle yerel olarak test ederken, aşağıdaki nedenlerden dolayı Firebase Authentication'ı kullanmak için 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ğinin Masaüstü uygulaması uygulama türü olması gerekir.

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. İ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);

Python

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:

Uygulamanıza Firebase özelliklerini ekleyin: