Firebase Admin SDK, सर्वर लाइब्रेरी का एक सेट है. इसकी मदद से, ज़्यादा सुविधाओं वाले एनवायरमेंट से Firebase के साथ इंटरैक्ट किया जा सकता है. इससे, Firebase Data Connect सेवा पर क्वेरी करने और डेटा में बदलाव करने जैसी कार्रवाइयां की जा सकती हैं. साथ ही, ज़्यादा सुविधाओं और किसी दूसरे व्यक्ति के नाम पर इस्तेमाल किए गए क्रेडेंशियल की मदद से, बल्क डेटा मैनेज करने और अन्य कार्रवाइयां की जा सकती हैं.
Admin SDK, आपको रीड/राइट और रीड-ओनली, दोनों मोड में ऑपरेशन कॉल करने के लिए एपीआई उपलब्ध कराता है. सिर्फ़ पढ़ने की अनुमति वाले ऑपरेशन की मदद से, एडमिन के ऐसे फ़ंक्शन लागू किए जा सकते हैं जिनसे आपके डेटाबेस में मौजूद डेटा में बदलाव नहीं होता.
Admin SDK सेटअप करना
अपने सर्वर पर Firebase Data Connect का इस्तेमाल शुरू करने के लिए, आपको पहले Node.js के लिए Admin SDK को इंस्टॉल और सेट अप करना होगा.
अपनी स्क्रिप्ट में Admin SDK टूल को शुरू करना
SDK टूल को शुरू करने के लिए, Data Connect एक्सटेंशन इंपोर्ट करें और अपने प्रोजेक्ट के सेवा आईडी और जगह की जानकारी दें.
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'
});
Admin SDK के साथ इस्तेमाल करने के लिए क्वेरी और म्यूटेशन डिज़ाइन करना
Admin SDK, Data Connect ऑपरेशन की जांच करने के लिए मददगार है. हालांकि, इसके लिए इन बातों का ध्यान रखना ज़रूरी है.
SDK टूल और @auth(level: NO_ACCESS)
ऑपरेशन डायरेक्टिव को समझना
Admin SDK, खास सुविधाओं के साथ काम करता है. इसलिए, यह आपकी सभी क्वेरी और म्यूटेशन को लागू कर सकता है. भले ही, @auth
निर्देशों का इस्तेमाल करके, ऐक्सेस लेवल सेट किए गए हों. इनमें NO_ACCESS
लेवल भी शामिल है.
अगर क्लाइंट ऑपरेशन के साथ-साथ, एडमिन स्क्रिप्ट में इंपोर्ट करने के लिए, .gql
सोर्स फ़ाइलों में एडमिन क्वेरी और म्यूटेशन को व्यवस्थित किया जाता है, तो Firebase का सुझाव है कि आप एडमिन ऑपरेशन को अनुमति ऐक्सेस लेवल के बिना मार्क करें. इसके अलावा, उन्हें NO_ACCESS
के तौर पर सेट करें. दोनों ही मामलों में, इससे क्लाइंट या बिना विशेषाधिकार वाले अन्य संदर्भों से ऐसे ऑपरेशन को पूरा होने से रोका जाता है.
Data Connect एम्युलेटर के साथ SDK टूल का इस्तेमाल करना
प्रोटोटाइप और टेस्ट एनवायरमेंट में, लोकल डेटा पर डेटा सीडिंग और अन्य कार्रवाइयां करने के लिए, यह सुविधा काम की हो सकती है. Admin SDK की मदद से, वर्कफ़्लो को आसान बनाया जा सकता है. ऐसा इसलिए, क्योंकि यह स्थानीय फ़्लो के लिए पुष्टि और अनुमति को अनदेखा करता है.
DATA_CONNECT_EMULATOR_HOST
एनवायरमेंट वैरिएबल सेट होने पर, Firebase Admin SDK टूल अपने-आप Data Connect एमुलेटर से कनेक्ट हो जाते हैं:
export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:9399"
ज़्यादा जानकारी के लिए, ये देखें:
इस्तेमाल के सामान्य उदाहरण लागू करना
Admin SDK, आपके अहम डेटा पर खास अधिकारों वाली कार्रवाइयों के लिए दिया जाता है.
Data Connect के लिए एपीआई में, रीड-राइट executeGraphql
इंटरफ़ेस और रीड-ओनली executeGraphqlRead
इंटरफ़ेस शामिल होता है.
उपयोगकर्ता का डेटा मैनेज करना
Admin SDK का इस्तेमाल, उपयोगकर्ता के डेटा को मैनेज करने के लिए किया जाता है.
एडमिन क्रेडेंशियल का इस्तेमाल करना
उपयोगकर्ता का डेटा ऐक्सेस करने का सबसे आसान तरीका, एडमिन क्रेडेंशियल का इस्तेमाल करना है.
// User can be publicly accessible, or restricted to admins
const query = "query getProfile(id: AuthID) { user(id: $id) { id name } }";
interface UserData {
user: {
id: string;
name: string;
};
}
export interface UserVariables {
id: string;
}
const options:GraphqlOptions<UserVariables> = { variables: { id: "QVBJcy5ndXJ1" } };
// executeGraphql
const gqlResponse = await dataConnect.executeGraphql<UserData, UserVariables>(query, options);
// executeGraphqlRead (similar to previous sample but only for read operations)
const gqlResponse = await dataConnect.executeGraphqlRead<UserData, UserVariables>(query, options);
// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }
उपयोगकर्ता के क्रेडेंशियल का गलत इस्तेमाल करना
ऐसे भी इस्तेमाल के उदाहरण हैं जहां आपको अपनी स्क्रिप्ट से, किसी खास उपयोगकर्ता की ओर से सीमित क्रेडेंशियल के आधार पर, उपयोगकर्ता के डेटा में बदलाव कराना है. यह तरीका, कम से कम अधिकारों के सिद्धांत का पालन करता है.
इस इंटरफ़ेस का इस्तेमाल करने के लिए, Authentication टोकन फ़ॉर्मैट का पालन करने वाले, पसंद के मुताबिक बनाए गए JWT ऑथराइज़ेशन टोकन से जानकारी इकट्ठा करें. कस्टम टोकन की गाइड भी देखें.
// Get the current user's data
const queryGetUserImpersonation = `
query getUser @auth(level: USER) {
user(key: {uid_expr: "auth.uid"}) {
id,
name
}
}`;
// Impersonate a user with the specified auth claims
const optionsAuthenticated: GraphqlOptions<undefined> = {
impersonate: {
authClaims: {
sub: 'QVBJcy5ndXJ1'
}
}
};
// executeGraphql with impersonated authenticated user scope
const gqlResponse = await dataConnect.executeGraphql<UserData, undefined>(queryGetUserImpersonation, optionsAuthenticated);
// gqlResponse -> { "data": { "user": { "id": "QVBJcy5ndXJ1", "name": "Fred" } } }
सार्वजनिक डेटा मैनेज करना
SDK का इस्तेमाल करके, सार्वजनिक तौर पर ऐक्सेस किए जा सकने वाले डेटा के साथ काम किया जा सकता है. इसके लिए, ऐसे उपयोगकर्ता के नाम पर काम किया जा सकता है जिसकी पुष्टि नहीं की गई है.
// Query to get posts, with authentication level PUBLIC
const queryGetPostsImpersonation = `
query getPosts @auth(level: PUBLIC) {
posts {
description
}
}`;
// Attempt to access data as an unauthenticated user
const optionsUnauthenticated: GraphqlOptions<undefined> = {
impersonate: {
unauthenticated: true
}
};
// executeGraphql with impersonated unauthenticated user scope
const gqlResponse = await dataConnect.executeGraphql<UserData, undefined>(queryGetPostsImpersonation, optionsUnauthenticated);
आगे क्या करना है?
- Admin SDK के लिए एपीआई की समीक्षा करें.
- प्रोजेक्ट मैनेजमेंट के अन्य ऑपरेशन के लिए, Firebase सीएलआई और Google Cloud कंसोल का इस्तेमाल करें. जैसे, स्कीमा और कनेक्टर मैनेज करना और सेवाओं और डेटाबेस मैनेज करना.