Firebase Admin SDK'sını sunucunuza ekleyin

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

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

Node.js SDK'yı ayrıcalıklı bir ortamdan (sunucu gibi) yönetici erişimi yerine son kullanıcı erişimi için bir istemci olarak kullanmakla ilgileniyorsanız (örneğin, bir Node.js masaüstünde veya IoT uygulamasında), yerine takip etmeli istemci JavaScript SDK kurmak için yönergeler .

Her dilde hangi Firebase özelliklerinin desteklendiğini gösteren bir özellik matrisi:

Özellik Node.js Java piton Gitmek C#
Özel Jeton Basma
Kimlik Simgesi Doğrulaması
Kullanıcı yönetimi
Özel Taleplerle Erişimi Kontrol Etme
Jeton İptali 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 Çok Noktaya Yayın
FCM Konu Aboneliklerini Yönetin
Bulut depolama
Bulut Firestore
Proje Yönetimi
Güvenlik Kuralları
ML Modeli Yönetimi
Firebase Uzaktan Yapılandırma
Firebase Uygulama Kontrolü

Bu kullanımlar için Yönetici SDK entegrasyonu hakkında daha fazla bilgi edinmek için, ilgili bkz Gerçek Zamanlı Veritabanı , FCM , Authentication , Uzaktan Config'i ve Bulut Depolama belgelerine. Bu sayfanın geri kalanı, Yönetici SDK'sının temel kurulumuna 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'sı — Node.js 10.13.0+
    • Yönetici Java SDK'sı — Java 7+ (Java 8+ önerilir)
      Java 7 desteği kullanımdan kaldırıldı.
    • Yönetici Python SDK'sı — Python 3.6+
    • Admin Go SDK'sı — 1.11+ Sürümüne Geçin
    • Yönetici .NET SDK — .NET Framework 4.5+ veya .Net Core 1.5+

Bir Firebase projesi ve hizmet hesabı oluşturun

Firebase Admin SDK'sını kullanmak için aşağıdakilere ihtiyacınız olacak:

  • Bir Firebase projesi
  • Firebase ile iletişim kurmak için bir hizmet hesabı
  • Hizmet hesabınızın kimlik bilgilerini içeren bir yapılandırma dosyası

Zaten bir Firebase projesi yoksa, sen bir tane oluşturmanız gerekir Firebase konsoluna . Ziyaret Firebase Projeleri Anlayın Firebase projeleri hakkında daha fazla bilgi edinmek.

SDK'yı ekleyin

Yeni bir proje oluşturuyorsanız, seçtiğiniz dil için SDK'yı yüklemeniz gerekir.

Node.js

Firebase Admin Node.js SDK'sı npm'de mevcuttur. Zaten bir yoksa package.json dosyası, bir tane oluşturun aracılığı npm init . Daha sonra, yüklemek firebase-admin npm paketi ve kaydetmek package.json :

$ npm install firebase-admin --save

, Uygulamanızda modülünü kullanmak için require herhangi bir JavaScript dosyası it:

var admin = require('firebase-admin');

Eğer ES2015 kullanıyorsanız, şunları yapabilirsiniz import modülü yerine:

import * as admin from 'firebase-admin';

Java

Firebase Admin Java SDK, Maven merkezi deposunda yayınlanır. Kütüphane yüklemek için, bir bağımlılık olarak ilan build.gradle dosyası:

dependencies {
  implementation 'com.google.firebase:firebase-admin:8.1.0'
}

Eğer uygulama oluşturmak için Maven kullanıyorsanız, sizin için aşağıdaki bağımlılık ekleyebilir pom.xml :

<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>8.1.0</version>
</dependency>

piton

Firebase Yönetici Python SDK aracılığıyla kullanılabilir pip . Sen aracılığıyla tüm kullanıcılar için kütüphane yükleyebilirsiniz sudo :

$ sudo pip install firebase-admin

Veya, ileterek sadece geçerli kullanıcı için kütüphane yükleyebilirsiniz --user bayrağı:

$ pip install --user firebase-admin

Gitmek

Git Yönetici SDK kullanılarak monte edilebilir go get programı:

# Install as a module dependency
$ go get firebase.google.com/go/v4

# Install to $GOPATH
$ go get firebase.google.com/go

C#

.NET Admin SDK, .NET paket yöneticisi kullanılarak yüklenebilir:

$ Install-Package FirebaseAdmin -Version 2.2.0

Alternatif olarak, kullanarak yüklemek dotnet komut satırı yardımcı programını:

$ dotnet add package FirebaseAdmin --version 2.2.0

Ya da aşağıdaki paket referans girişini ekleyerek yükleyebilirsiniz .csproj dosyası:

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

SDK'yı başlat

Bir Firebase proje oluşturduktan sonra, birlikte servis hesabı dosyasını birleştiren bir yetkilendirme stratejisi ile SDK'yı başlatabilir Google Uygulaması Varsayılan Kimlik Bilgileri .

Firebase projeler hakkında destekleyen hizmet hesaplarını uygulamanızın sunucu veya güvenilen ortamdan Firebase sunucu API'leri çağırmaya kullanabilirsiniz. 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 ona 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 için:

  1. Firebase konsolunda, açık Ayarlar> olarak hizmet hesapları .

  2. Yeni Özel Anahtar üret tıklayın ve ardından tıklayarak onaylayın Anahtarı oluşturun.

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

Bir hizmet hesabı aracılığıyla yetki verirken, uygulamanıza kimlik bilgilerini sağlamak için iki seçeneğiniz vardır. Ya ayarlayabilirsiniz GOOGLE_APPLICATION_CREDENTIALS ortam değişkeni veya açıkça kodunda Hizmet hesabı anahtarına yolunu iletebilirsiniz. İlk seçenek daha güvenlidir ve şiddetle tavsiye edilir.

Ortam değişkenini ayarlamak için:

Ortam değişkeni Set GOOGLE_APPLICATION_CREDENTIALS servis hesabı anahtarı içeren JSON dosyasının dosya yoluna. 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), kimlik bilgilerinizi dolaylı olarak belirleyebilir ve Google dışı ortamlarda test ederken 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

admin.initializeApp({
    credential: admin.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(),
});

OAuth 2.0 yenileme belirteci kullanma

Yönetici SDK ayrıca bir kimlik doğrulaması sağlayan bir kimlik bilgisi sunar tarihinde OAuth2'ye belirteç yenilemek:

Node.js

const refreshToken = '...'; // Get refresh token from OAuth2 flow

admin.initializeApp({
  credential: admin.credential.refreshToken(refreshToken),
  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"),
});

Parametresiz başlat

SDK, hiçbir parametre olmadan da başlatılabilir. Bu durumda, SDK kullanan Google Uygulaması Varsayılan Kimlik . Varsayılan kimlik bilgileri araması Google ortamlarında ortam değişkenleri veya başka yapılandırma sağlamaya gerek kalmadan tamamen otomatik olduğundan, Compute Engine, Kubernetes Engine, App Engine ve Cloud Functions üzerinde çalışan uygulamalar için SDK'nın bu şekilde başlatılması şiddetle önerilir.

İsteğe bağlı olarak Gerçek Zamanlı Veritabanı, Cloud Storage veya Bulut Fonksiyonlar gibi hizmetler için başlatma seçenekleri belirlemek için kullanın FIREBASE_CONFIG ortam değişkeni. İçeriği ise FIREBASE_CONFIG değişkeni bir ile başlar { bir 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 = admin.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:

Birden çok uygulamayı başlat

Çoğu durumda, yalnızca tek bir varsayılan uygulamayı başlatmanız gerekir. Hizmetlere bu uygulamadan iki eşdeğer yolla erişebilirsiniz:

Node.js

// Initialize the default app
const defaultApp = admin.initializeApp(defaultAppConfig);

console.log(defaultApp.name);  // '[DEFAULT]'

// Retrieve services via the defaultApp variable...
let defaultAuth = defaultApp.auth();
let defaultDatabase = defaultApp.database();

// ... or use the equivalent shorthand notation
defaultAuth = admin.auth();
defaultDatabase = admin.database();

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ından veri okumak ve başka bir proje için özel jetonlar basmak 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
admin.initializeApp(defaultAppConfig);

// Initialize another app with a different config
var otherApp = admin.initializeApp(otherAppConfig, 'other');

console.log(admin.app().name);  // '[DEFAULT]'
console.log(otherApp.name);     // 'other'

// Use the shorthand notation to retrieve the default app's services
const defaultAuth = admin.auth();
const defaultDatabase = admin.database();

// Use the otherApp variable to retrieve the other app's services
const otherAuth = otherApp.auth();
const otherDatabase = otherApp.database();

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 VM kullanıyorsanız, emin de doğru ayarlamayı sağlar erişim kapsamları . Gerçek zamanlı Veritabanı ve Kimlik Doğrulama için, biten kapsamları ihtiyaç userinfo.email ve ya cloud-platform veya firebase.database . Mevcut erişim kapsamları kontrol edin ve bunları değiştirmek için kullanarak aşağıdaki komutları çalıştırın gcloud .

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

İle yerel Admin SDK test ederken Google Uygulaması Standart Kimlik çalıştırarak elde gcloud auth application-default login , ek değişiklikler nedeniyle aşağıdakilere Firebase kimlik doğrulaması kullanmak için gereklidir:

  • Firebase Kimlik Doğrulaması, 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, Google uygulamasında Varsayılan Kimlik üretebilir gcloud kullanarak kendi OAuth 2.0 istemci kimliği . OAuth istemci kimliği bir Masaüstü uygulaması uygulama tipi olmak zorundadır.

gcloud

gcloud auth application-default login --client-id-file=[/path/to/client/id/file]

Sen uygulama başlatma üzerinde açıkça proje kimliği belirtin ya da sadece kullanabilirsiniz GOOGLE_CLOUD_PROJECT ortam değişkeni. İ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

admin.initializeApp({
  credential: admin.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:

Uygulamanıza Firebase özellikleri ekleyin: