REST İsteklerini Doğrula

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Firebase SDK'ları, sizin adınıza Firebase Gerçek Zamanlı Veritabanı ile tüm kimlik doğrulama ve iletişimi yönetir. Ancak, istemci SDK'sı olmayan bir ortamdaysanız veya kalıcı bir veritabanı bağlantısının ek yükünden kaçınmak istiyorsanız, verileri okumak ve yazmak için Realtime Database REST API'yi kullanabilirsiniz.

Aşağıdaki yöntemlerden biriyle kullanıcıların kimliğini doğrulayın:

  1. Google OAuth2 erişim belirteçleri - Genellikle, Realtime Database'den okuma ve Realtime Database'e yazma yeteneği, Realtime Database Rules tarafından yönetilir. Ancak, verilerinize bir sunucudan erişebilir ve bir hizmet hesabından oluşturulan bir Google OAuth2 erişim belirteciyle bu sunucuya verilerinize tam okuma ve yazma erişimi verebilirsiniz.

  2. Firebase Kimliği belirteçleri - İstemci SDK'larında Gerçek Zamanlı Veritabanı Kuralları ile erişimi sınırlamak gibi, bireysel bir kullanıcı olarak kimliği doğrulanmış istekler de göndermek isteyebilirsiniz. REST API, istemci SDK'ları tarafından kullanılan aynı Firebase Kimliği belirteçlerini kabul eder.

Google OAuth2 erişim belirteçleri

Gerçek Zamanlı Veritabanı Kurallarınıza göre genel olarak okunabilen veya yazılabilen tüm veriler, herhangi bir kimlik doğrulaması olmadan REST API aracılığıyla da okunabilir ve yazılabilir. Ancak, sunucunuzun Gerçek Zamanlı Veritabanı Kurallarınızı atlamasını istiyorsanız, okuma ve yazma isteklerinizin kimliğini doğrulamanız gerekir. Google OAuth2 aracılığıyla kimlik doğrulama, aşağıdaki adımları gerektirir:

  1. Bir erişim belirteci oluşturun.
  2. Bu erişim belirteci ile kimlik doğrulaması yapın.

Bir erişim belirteci oluştur

Realtime Database REST API, standart Google OAuth2 erişim belirteçlerini kabul eder. Erişim belirteçleri, Gerçek Zamanlı Veritabanınız için uygun izinlere sahip bir hizmet hesabı kullanılarak oluşturulabilir. Firebase konsolunun Hizmet Hesapları bölümünün altındaki Yeni Özel Anahtar Oluştur düğmesini tıklatmak, halihazırda yoksa kolayca yeni bir hizmet hesabı anahtar dosyası oluşturmanıza olanak tanır.

Bir hizmet hesabı anahtarı dosyanız olduğunda, aşağıdaki gerekli kapsamlara sahip bir Google OAuth2 erişim belirteci oluşturmak için Google API istemci kitaplıklarından birini kullanabilirsiniz:

  • https://www.googleapis.com/auth/userinfo.email
  • https://www.googleapis.com/auth/firebase.database

Realtime Database REST API'de çeşitli dillerde kimlik doğrulaması yapmak için Google OAuth2 erişim belirteçlerinin nasıl oluşturulacağını gösteren bazı örnek uygulamalar aşağıda verilmiştir:

Node.js

Node.js için Google API İstemci Kitaplığı'nı kullanma:

var {google} = require("googleapis");

// Load the service account key JSON file.
var serviceAccount = require("path/to/serviceAccountKey.json");

// Define the required scopes.
var scopes = [
  "https://www.googleapis.com/auth/userinfo.email",
  "https://www.googleapis.com/auth/firebase.database"
];

// Authenticate a JWT client with the service account.
var jwtClient = new google.auth.JWT(
  serviceAccount.client_email,
  null,
  serviceAccount.private_key,
  scopes
);

// Use the JWT client to generate an access token.
jwtClient.authorize(function(error, tokens) {
  if (error) {
    console.log("Error making request to generate access token:", error);
  } else if (tokens.access_token === null) {
    console.log("Provided service account does not have permission to generate access tokens");
  } else {
    var accessToken = tokens.access_token;

    // See the "Using the access token" section below for information
    // on how to use the access token to send authenticated requests to
    // the Realtime Database REST API.
  }
});

java

Java için Google API İstemci Kitaplığını Kullanma:

// Load the service account key JSON file
FileInputStream serviceAccount = new FileInputStream("path/to/serviceAccountKey.json");

// Authenticate a Google credential with the service account
GoogleCredential googleCred = GoogleCredential.fromStream(serviceAccount);

// Add the required scopes to the Google credential
GoogleCredential scoped = googleCred.createScoped(
    Arrays.asList(
      "https://www.googleapis.com/auth/firebase.database",
      "https://www.googleapis.com/auth/userinfo.email"
    )
);

// Use the Google credential to generate an access token
scoped.refreshToken();
String token = scoped.getAccessToken();

// See the "Using the access token" section below for information
// on how to use the access token to send authenticated requests to the
// Realtime Database REST API.

Piton

google-auth kitaplığını kullanarak:

from google.oauth2 import service_account
from google.auth.transport.requests import AuthorizedSession

# Define the required scopes
scopes = [
  "https://www.googleapis.com/auth/userinfo.email",
  "https://www.googleapis.com/auth/firebase.database"
]

# Authenticate a credential with the service account
credentials = service_account.Credentials.from_service_account_file(
    "path/to/serviceAccountKey.json", scopes=scopes)

# Use the credentials object to authenticate a Requests session.
authed_session = AuthorizedSession(credentials)
response = authed_session.get(
    "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json")

# Or, use the token directly, as described in the "Authenticate with an
# access token" section below. (not recommended)
request = google.auth.transport.requests.Request()
credentials.refresh(request)
access_token = credentials.token

Bir erişim belirteci ile kimlik doğrulaması yapın

Gerçek Zamanlı Veritabanı REST API'sine kimliği doğrulanmış istekler göndermek için, yukarıda oluşturulan Google OAuth2 erişim belirtecini Authorization: Bearer <ACCESS_TOKEN> başlığı veya access_token=<ACCESS_TOKEN> sorgu dizesi parametresi olarak iletin. İşte Ada'nın adını okumak için örnek bir curl isteği:

curl "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?access_token=<ACCESS_TOKEN>"

<DATABASE_NAME> Gerçek Zamanlı Veritabanınızın adıyla ve <ACCESS_TOKEN> bir Google OAuth2 erişim belirteciyle değiştirdiğinizden emin olun.

Başarılı bir istek, 200 OK HTTP durum kodu ile belirtilecektir. Yanıt, alınmakta olan verileri içerir:

{"first":"Ada","last":"Lovelace"}

Firebase kimliği belirteçleri

Bir kullanıcı veya cihaz, Firebase Kimlik Doğrulaması kullanarak oturum açtığında, Firebase, onları benzersiz bir şekilde tanımlayan ve onlara Gerçek Zamanlı Veritabanı ve Bulut Depolama gibi çeşitli kaynaklara erişim sağlayan karşılık gelen bir kimlik belirteci oluşturur. Gerçek Zamanlı Veritabanı REST API'sinin kimliğini doğrulamak ve o kullanıcı adına isteklerde bulunmak için bu kimlik belirtecini yeniden kullanabilirsiniz.

Kimlik belirteci oluştur

İstemciden Firebase Kimliği belirtecini almak için İstemcilerde Kimlik belirteçlerini alma bölümündeki adımları izleyin.

Kimlik belirteçlerinin kısa bir süre sonra sona erdiğini ve alındıktan sonra mümkün olan en kısa sürede kullanılması gerektiğini unutmayın.

Kimlik belirteci ile kimlik doğrulaması yapın

Gerçek Zamanlı Veritabanı REST API'sine kimliği doğrulanmış istekler göndermek için, yukarıda oluşturulan kimlik belirtecini auth=<ID_TOKEN> sorgu dizesi parametresi olarak iletin. İşte Ada'nın adını okumak için örnek bir curl isteği:

curl "https://<DATABASE_NAME>.firebaseio.com/users/ada/name.json?auth=<ID_TOKEN>"

<DATABASE_NAME> Gerçek Zamanlı Veritabanınızın adıyla ve <ID_TOKEN> bir Firebase ID belirteci ile değiştirdiğinizden emin olun.

Başarılı bir istek, 200 OK HTTP durum kodu ile belirtilecektir. Yanıt, alınmakta olan verileri içerir:

{"first":"Ada","last":"Lovelace"}

Eski jetonlar

Hala eski Firebase kimlik doğrulama belirteçlerini kullanıyorsanız, REST kimlik doğrulamanızı yukarıda açıklanan kimlik doğrulama yöntemlerinden biriyle güncellemenizi öneririz.

Realtime Database REST API, sırlar da dahil olmak üzere eski kimlik doğrulama belirteçleri aracılığıyla kimlik doğrulamayı desteklemeye devam ediyor. Gerçek Zamanlı Veritabanı sırlarınız, Firebase konsolunun Hizmet Hesapları bölümünde bulunabilir.