Firebase Admin SDK to zestaw bibliotek serwera, który umożliwia interakcję z Firebase z przywilegium dostępu do wykonywania działań takich jak wykonywanie zapytań i mutacji w usłudze Firebase Data Connect na potrzeby zbiorczego zarządzania danymi i innych operacji z podwyższonymi uprawnieniami.
Usługa Admin SDK udostępnia interfejs API do wywoływania operacji w trybie odczytu/zapisu i tylko do odczytu. Dzięki operacjom tylko do odczytu możesz mieć pewność, że funkcje administracyjne nie mogą modyfikować danych w Twoich bazach danych.
Konfiguracja pakietu Admin SDK
Aby zacząć korzystać z Firebase Data Connect na serwerze, musisz najpierw zainstalować i skonfigurować Admin SDK w Node.js.
Inicjowanie pakietu Admin SDK w skryptach
Aby zainicjować pakiet SDK, zaimportuj rozszerzenia Data Connect i ogłoś identyfikator usługi oraz lokalizację projektu.
import { initializeApp } from 'firebase-admin/app';
import { getDataConnect } from 'firebase-admin/data-connect';
// If you'd like to use OAuth2 flows and other credentials to log in,
// visit https://firebase.google.com/docs/admin/setup#initialize-sdk
// for alternative ways to initialize the SDK.
const app = initializeApp();
const dataConnect = getDataConnect({
serviceId: 'serviceId',
location: 'us-west2'
});
projektowanie zapytań i mutacji do użycia z usługą Admin SDK,
Admin SDK jest przydatny do testowania operacji Data Connect, biorąc pod uwagę te kwestie:
Informacje o pakiecie SDK i instrukcji operacji @auth(level: NO_ACCESS)
Ponieważ Admin SDK działa z uprawnieniami, może wykonywać dowolne zapytania i mutacje niezależnie od poziomów dostępu ustawionych za pomocą dyrektyw @auth
, w tym na poziomie NO_ACCESS
.
Jeśli oprócz operacji na kliencie organizujesz zapytania administracyjne i mutacje w plikach źródłowych .gql
na potrzeby importowania do skryptów administracyjnych, Firebase zaleca oznaczenie operacji administracyjnych bez żadnego poziomu dostępu autoryzacji lub bardziej jednoznaczne ich oznaczenie jako NO_ACCESS
. W obu przypadkach zapobiega to wykonywaniu takich operacji przez klientów lub w innych kontekstach bez uprawnień.
Korzystanie z pakietu SDK w emulatorze Data Connect
W środowiskach prototypów i testów może być przydatne wykonanie zasiewu danych i innych operacji na danych lokalnych. Flaga Admin SDK pozwala uprościć przepływy pracy, ponieważ ignoruje uwierzytelnianie i autoryzację w przypadku procesów lokalnych.
Pakiety SDK Firebase Admin automatycznie łączą się z emulatorem Data Connect, gdy ustawiona jest zmienna środowiskowa DATA_CONNECT_EMULATOR_HOST
:
export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:8080"
Aby dowiedzieć się więcej, zobacz:
- Przewodnik po zasiewie danych w ramach lokalnego rozwoju
- dokumentacja emulatora Data Connect.
Realizacja typowych przypadków użycia
Usługa Admin SDK jest przeznaczona do operacji uprzywilejowanych dotyczących Twoich danych krytycznych.
Interfejs API usługi Data Connect składa się z interfejsu executeGraphql
do odczytu i zapisu oraz interfejsu executeGraphqlRead
tylko do odczytu.
Zarządzanie danymi użytkowników
Typowym zastosowaniem Admin SDK jest zarządzanie danymi użytkownika.
interface UserData {
user: {
id: string;
name: string;
};
}
export interface UserVariables {
id: string;
}
const options:GraphqlOptions<UserVariables> = { variables: { id: "QVBJcy5ndXJ1" } };
// user can be publicly accessible, or restricted to admins
const query = "query getProfile(id: AuthID) { user(id: $id) { id name } }";
//executeGraphql
const gqlResponse = await dataConnect.executeGraphql<UserData, UserVariables>(query, options);
//executeGraphqlRead (similar to above but only for read operations)
const gqlResponse = await dataConnect.executeGraphqlRead<UserData, UserVariables>(query, options);
// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }
Co dalej?
- Zapoznaj się z interfejsem API usługi Admin SDK.
- Do innych operacji związanych z zarządzaniem projektem, takich jak zarządzanie schematami i złączami oraz zarządzanie usługami i bazami danych, używaj interfejsu wiersza poleceń Firebase i konsoli Google Cloud.