Firebase Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে Firebase-এর সাথে ইন্টারঅ্যাক্ট করতে দেয় যেমন একটি Firebase Data Connect পরিষেবায় বাল্ক ডেটা ম্যানেজমেন্ট এবং উন্নত বিশেষাধিকার এবং ছদ্মবেশী শংসাপত্র সহ অন্যান্য ক্রিয়াকলাপগুলির জন্য একটি ফায়ারবেস ডেটা কানেক্ট পরিষেবাতে কুয়েরি এবং মিউটেশনগুলি সম্পাদন করার জন্য।
Admin SDK আপনাকে রিড/রাইট এবং রিড-ওনলি মোডে কল অপারেশন করার জন্য একটি API প্রদান করে। শুধুমাত্র পঠনযোগ্য ক্রিয়াকলাপগুলির সাথে, আপনি প্রশাসনিক ফাংশনগুলি বাস্তবায়নের মানসিক শান্তি পাবেন যা আপনার ডেটাবেসে ডেটা পরিবর্তন করতে পারে না।
অ্যাডমিন SDK সেটআপ
আপনার সার্ভারে Firebase Data Connect এর সাথে ব্যবহার শুরু করতে, আপনাকে প্রথমে Node.js এর জন্য Admin SDK ইনস্টল এবং সেট আপ করতে হবে।
আপনার স্ক্রিপ্টগুলিতে অ্যাডমিন 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 বিশেষাধিকারের সাথে কাজ করে, তাই NO_ACCESS
লেভেল সহ @auth
নির্দেশাবলী ব্যবহার করে সেট করা অ্যাক্সেস লেভেল নির্বিশেষে এটি আপনার যেকোনো প্রশ্ন এবং মিউটেশন চালাতে পারে।
যদি আপনার ক্লায়েন্ট অপারেশনের পাশাপাশি, আপনি প্রশাসনিক স্ক্রিপ্টে আমদানি করার জন্য .gql
সোর্স ফাইলগুলিতে আপনার প্রশাসনিক প্রশ্ন এবং মিউটেশনগুলি সংগঠিত করেন, ফায়ারবেস সুপারিশ করে যে আপনি প্রশাসনিক ক্রিয়াকলাপগুলিকে কোনও অনুমোদনের অ্যাক্সেস স্তর ছাড়াই চিহ্নিত করুন, বা সম্ভবত আরও স্পষ্টভাবে NO_ACCESS
হিসাবে সেট করুন। যেভাবেই হোক, এটি এই ধরনের ক্রিয়াকলাপগুলিকে ক্লায়েন্টদের কাছ থেকে বা অন্যান্য অ-সুবিধাপ্রাপ্ত প্রেক্ষাপটে চালানো থেকে বাধা দেয়।
Data Connect এমুলেটরের সাথে SDK ব্যবহার করুন
প্রোটোটাইপ এবং পরীক্ষার পরিবেশে, এটি স্থানীয় ডেটাতে ডেটা সিডিং এবং অন্যান্য ক্রিয়াকলাপ সম্পাদন করতে কার্যকর হতে পারে। Admin SDK আপনাকে আপনার কর্মপ্রবাহকে সহজ করতে দেয় কারণ এটি স্থানীয় প্রবাহের জন্য প্রমাণীকরণ এবং অনুমোদনকে উপেক্ষা করে।
যখন DATA_CONNECT_EMULATOR_HOST
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase অ্যাডমিন 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" } } }
ছদ্মবেশী ব্যবহারকারীর শংসাপত্র
এমন কিছু ব্যবহারও রয়েছে যেখানে আপনি আপনার স্ক্রিপ্টগুলিকে নির্দিষ্ট ব্যবহারকারীর পক্ষে সীমিত শংসাপত্রের উপর ভিত্তি করে ব্যবহারকারীর ডেটা পরিবর্তন করতে চান৷ এই পদ্ধতিটি সর্বনিম্ন বিশেষাধিকারের নীতিকে সম্মান করে।
এই ইন্টারফেসটি ব্যবহার করতে, একটি কাস্টমাইজড JWT প্রমাণীকরণ টোকেন থেকে তথ্য সংগ্রহ করুন যা Authentication টোকেন ফর্ম্যাট অনুসরণ করে। এছাড়াও কাস্টম টোকেন গাইড দেখুন।
// 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 জন্য API পর্যালোচনা করুন।
- অন্যান্য প্রজেক্ট ম্যানেজমেন্ট অপারেশনের জন্য Firebase CLI এবং Google Cloud কনসোল ব্যবহার করুন, যেমন স্কিমা এবং সংযোগকারীগুলি পরিচালনা করা এবং পরিষেবা এবং ডেটাবেসগুলি পরিচালনা করা ।
Firebase Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে Firebase-এর সাথে ইন্টারঅ্যাক্ট করতে দেয় যেমন একটি Firebase Data Connect পরিষেবায় বাল্ক ডেটা ম্যানেজমেন্ট এবং উন্নত বিশেষাধিকার এবং ছদ্মবেশী শংসাপত্র সহ অন্যান্য ক্রিয়াকলাপগুলির জন্য একটি ফায়ারবেস ডেটা কানেক্ট পরিষেবাতে কুয়েরি এবং মিউটেশনগুলি সম্পাদন করার জন্য।
Admin SDK আপনাকে রিড/রাইট এবং রিড-ওনলি মোডে কল অপারেশন করার জন্য একটি API প্রদান করে। শুধুমাত্র পঠনযোগ্য ক্রিয়াকলাপগুলির সাথে, আপনি প্রশাসনিক ফাংশনগুলি বাস্তবায়নের মানসিক শান্তি পাবেন যা আপনার ডেটাবেসে ডেটা পরিবর্তন করতে পারে না।
অ্যাডমিন SDK সেটআপ
আপনার সার্ভারে Firebase Data Connect এর সাথে ব্যবহার শুরু করতে, আপনাকে প্রথমে Node.js এর জন্য Admin SDK ইনস্টল এবং সেট আপ করতে হবে।
আপনার স্ক্রিপ্টগুলিতে অ্যাডমিন 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 বিশেষাধিকারের সাথে কাজ করে, তাই NO_ACCESS
লেভেল সহ @auth
নির্দেশাবলী ব্যবহার করে সেট করা অ্যাক্সেস লেভেল নির্বিশেষে এটি আপনার যেকোনো প্রশ্ন এবং মিউটেশন চালাতে পারে।
যদি আপনার ক্লায়েন্ট অপারেশনের পাশাপাশি, আপনি প্রশাসনিক স্ক্রিপ্টে আমদানি করার জন্য .gql
সোর্স ফাইলগুলিতে আপনার প্রশাসনিক প্রশ্ন এবং মিউটেশনগুলি সংগঠিত করেন, ফায়ারবেস সুপারিশ করে যে আপনি প্রশাসনিক ক্রিয়াকলাপগুলিকে কোনও অনুমোদনের অ্যাক্সেস স্তর ছাড়াই চিহ্নিত করুন, বা সম্ভবত আরও স্পষ্টভাবে NO_ACCESS
হিসাবে সেট করুন। যেভাবেই হোক, এটি এই ধরনের ক্রিয়াকলাপগুলিকে ক্লায়েন্টদের কাছ থেকে বা অন্যান্য অ-সুবিধাপ্রাপ্ত প্রেক্ষাপটে চালানো থেকে বাধা দেয়।
Data Connect এমুলেটরের সাথে SDK ব্যবহার করুন
প্রোটোটাইপ এবং পরীক্ষার পরিবেশে, এটি স্থানীয় ডেটাতে ডেটা সিডিং এবং অন্যান্য ক্রিয়াকলাপ সম্পাদন করতে কার্যকর হতে পারে। Admin SDK আপনাকে আপনার কর্মপ্রবাহকে সহজ করতে দেয় কারণ এটি স্থানীয় প্রবাহের জন্য প্রমাণীকরণ এবং অনুমোদনকে উপেক্ষা করে।
যখন DATA_CONNECT_EMULATOR_HOST
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase অ্যাডমিন 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" } } }
ছদ্মবেশী ব্যবহারকারীর শংসাপত্র
এমন কিছু ব্যবহারও রয়েছে যেখানে আপনি আপনার স্ক্রিপ্টগুলিকে নির্দিষ্ট ব্যবহারকারীর পক্ষে সীমিত শংসাপত্রের উপর ভিত্তি করে ব্যবহারকারীর ডেটা পরিবর্তন করতে চান৷ এই পদ্ধতিটি সর্বনিম্ন বিশেষাধিকারের নীতিকে সম্মান করে।
এই ইন্টারফেসটি ব্যবহার করতে, একটি কাস্টমাইজড JWT প্রমাণীকরণ টোকেন থেকে তথ্য সংগ্রহ করুন যা Authentication টোকেন ফর্ম্যাট অনুসরণ করে। এছাড়াও কাস্টম টোকেন গাইড দেখুন।
// 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 জন্য API পর্যালোচনা করুন।
- অন্যান্য প্রজেক্ট ম্যানেজমেন্ট অপারেশনের জন্য Firebase CLI এবং Google Cloud কনসোল ব্যবহার করুন, যেমন স্কিমা এবং সংযোগকারীগুলি পরিচালনা করা এবং পরিষেবা এবং ডেটাবেসগুলি পরিচালনা করা ।
Firebase Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে Firebase-এর সাথে ইন্টারঅ্যাক্ট করতে দেয় যেমন একটি Firebase Data Connect পরিষেবায় বাল্ক ডেটা ম্যানেজমেন্ট এবং উন্নত বিশেষাধিকার এবং ছদ্মবেশী শংসাপত্র সহ অন্যান্য ক্রিয়াকলাপগুলির জন্য একটি ফায়ারবেস ডেটা কানেক্ট পরিষেবাতে কুয়েরি এবং মিউটেশনগুলি সম্পাদন করার জন্য।
Admin SDK আপনাকে রিড/রাইট এবং রিড-ওনলি মোডে কল অপারেশন করার জন্য একটি API প্রদান করে। শুধুমাত্র পঠনযোগ্য ক্রিয়াকলাপগুলির সাথে, আপনি প্রশাসনিক ফাংশনগুলি বাস্তবায়নের মানসিক শান্তি পাবেন যা আপনার ডেটাবেসে ডেটা পরিবর্তন করতে পারে না।
অ্যাডমিন SDK সেটআপ
আপনার সার্ভারে Firebase Data Connect এর সাথে ব্যবহার শুরু করতে, আপনাকে প্রথমে Node.js এর জন্য Admin SDK ইনস্টল এবং সেট আপ করতে হবে।
আপনার স্ক্রিপ্টগুলিতে অ্যাডমিন 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 বিশেষাধিকারের সাথে কাজ করে, তাই NO_ACCESS
লেভেল সহ @auth
নির্দেশাবলী ব্যবহার করে সেট করা অ্যাক্সেস লেভেল নির্বিশেষে এটি আপনার যেকোনো প্রশ্ন এবং মিউটেশন চালাতে পারে।
যদি আপনার ক্লায়েন্ট অপারেশনের পাশাপাশি, আপনি প্রশাসনিক স্ক্রিপ্টে আমদানি করার জন্য .gql
সোর্স ফাইলগুলিতে আপনার প্রশাসনিক প্রশ্ন এবং মিউটেশনগুলি সংগঠিত করেন, ফায়ারবেস সুপারিশ করে যে আপনি প্রশাসনিক ক্রিয়াকলাপগুলিকে কোনও অনুমোদনের অ্যাক্সেস স্তর ছাড়াই চিহ্নিত করুন, বা সম্ভবত আরও স্পষ্টভাবে NO_ACCESS
হিসাবে সেট করুন। যেভাবেই হোক, এটি এই ধরনের ক্রিয়াকলাপগুলিকে ক্লায়েন্টদের কাছ থেকে বা অন্যান্য অ-সুবিধাপ্রাপ্ত প্রেক্ষাপটে চালানো থেকে বাধা দেয়।
Data Connect এমুলেটরের সাথে SDK ব্যবহার করুন
প্রোটোটাইপ এবং পরীক্ষার পরিবেশে, এটি স্থানীয় ডেটাতে ডেটা সিডিং এবং অন্যান্য ক্রিয়াকলাপ সম্পাদন করতে কার্যকর হতে পারে। Admin SDK আপনাকে আপনার কর্মপ্রবাহকে সহজ করতে দেয় কারণ এটি স্থানীয় প্রবাহের জন্য প্রমাণীকরণ এবং অনুমোদনকে উপেক্ষা করে।
যখন DATA_CONNECT_EMULATOR_HOST
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase অ্যাডমিন 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" } } }
ছদ্মবেশী ব্যবহারকারীর শংসাপত্র
এমন কিছু ব্যবহারও রয়েছে যেখানে আপনি আপনার স্ক্রিপ্টগুলিকে নির্দিষ্ট ব্যবহারকারীর পক্ষে সীমিত শংসাপত্রের উপর ভিত্তি করে ব্যবহারকারীর ডেটা পরিবর্তন করতে চান৷ এই পদ্ধতিটি সর্বনিম্ন বিশেষাধিকারের নীতিকে সম্মান করে।
এই ইন্টারফেসটি ব্যবহার করতে, একটি কাস্টমাইজড JWT প্রমাণীকরণ টোকেন থেকে তথ্য সংগ্রহ করুন যা Authentication টোকেন ফর্ম্যাট অনুসরণ করে। এছাড়াও কাস্টম টোকেন গাইড দেখুন।
// 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 জন্য API পর্যালোচনা করুন।
- অন্যান্য প্রজেক্ট ম্যানেজমেন্ট অপারেশনের জন্য Firebase CLI এবং Google Cloud কনসোল ব্যবহার করুন, যেমন স্কিমা এবং সংযোগকারীগুলি পরিচালনা করা এবং পরিষেবা এবং ডেটাবেসগুলি পরিচালনা করা ।
Firebase Admin SDK হল সার্ভার লাইব্রেরির একটি সেট যা আপনাকে বিশেষ সুবিধাপ্রাপ্ত পরিবেশ থেকে Firebase-এর সাথে ইন্টারঅ্যাক্ট করতে দেয় যেমন একটি Firebase Data Connect পরিষেবায় বাল্ক ডেটা ম্যানেজমেন্ট এবং উন্নত বিশেষাধিকার এবং ছদ্মবেশী শংসাপত্র সহ অন্যান্য ক্রিয়াকলাপগুলির জন্য একটি ফায়ারবেস ডেটা কানেক্ট পরিষেবাতে কুয়েরি এবং মিউটেশনগুলি সম্পাদন করার জন্য।
Admin SDK আপনাকে রিড/রাইট এবং রিড-ওনলি মোডে কল অপারেশন করার জন্য একটি API প্রদান করে। শুধুমাত্র পঠনযোগ্য ক্রিয়াকলাপগুলির সাথে, আপনি প্রশাসনিক ফাংশনগুলি বাস্তবায়নের মানসিক শান্তি পাবেন যা আপনার ডেটাবেসে ডেটা পরিবর্তন করতে পারে না।
অ্যাডমিন SDK সেটআপ
আপনার সার্ভারে Firebase Data Connect এর সাথে ব্যবহার শুরু করতে, আপনাকে প্রথমে Node.js এর জন্য Admin SDK ইনস্টল এবং সেট আপ করতে হবে।
আপনার স্ক্রিপ্টগুলিতে অ্যাডমিন 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 বিশেষাধিকারের সাথে কাজ করে, তাই NO_ACCESS
লেভেল সহ @auth
নির্দেশাবলী ব্যবহার করে সেট করা অ্যাক্সেস লেভেল নির্বিশেষে এটি আপনার যেকোনো প্রশ্ন এবং মিউটেশন চালাতে পারে।
যদি আপনার ক্লায়েন্ট অপারেশনের পাশাপাশি, আপনি প্রশাসনিক স্ক্রিপ্টে আমদানি করার জন্য .gql
সোর্স ফাইলগুলিতে আপনার প্রশাসনিক প্রশ্ন এবং মিউটেশনগুলি সংগঠিত করেন, ফায়ারবেস সুপারিশ করে যে আপনি প্রশাসনিক ক্রিয়াকলাপগুলিকে কোনও অনুমোদনের অ্যাক্সেস স্তর ছাড়াই চিহ্নিত করুন, বা সম্ভবত আরও স্পষ্টভাবে NO_ACCESS
হিসাবে সেট করুন। যেভাবেই হোক, এটি এই ধরনের ক্রিয়াকলাপগুলিকে ক্লায়েন্টদের কাছ থেকে বা অন্যান্য অ-সুবিধাপ্রাপ্ত প্রেক্ষাপটে চালানো থেকে বাধা দেয়।
Data Connect এমুলেটরের সাথে SDK ব্যবহার করুন
প্রোটোটাইপ এবং পরীক্ষার পরিবেশে, এটি স্থানীয় ডেটাতে ডেটা সিডিং এবং অন্যান্য ক্রিয়াকলাপ সম্পাদন করতে কার্যকর হতে পারে। Admin SDK আপনাকে আপনার কর্মপ্রবাহকে সহজ করতে দেয় কারণ এটি স্থানীয় প্রবাহের জন্য প্রমাণীকরণ এবং অনুমোদনকে উপেক্ষা করে।
যখন DATA_CONNECT_EMULATOR_HOST
এনভায়রনমেন্ট ভেরিয়েবল সেট করা থাকে তখন Firebase অ্যাডমিন 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" } } }
ছদ্মবেশী ব্যবহারকারীর শংসাপত্র
এমন কিছু ব্যবহারও রয়েছে যেখানে আপনি আপনার স্ক্রিপ্টগুলিকে নির্দিষ্ট ব্যবহারকারীর পক্ষে সীমিত শংসাপত্রের উপর ভিত্তি করে ব্যবহারকারীর ডেটা পরিবর্তন করতে চান৷ এই পদ্ধতিটি সর্বনিম্ন বিশেষাধিকারের নীতিকে সম্মান করে।
এই ইন্টারফেসটি ব্যবহার করতে, একটি কাস্টমাইজড JWT প্রমাণীকরণ টোকেন থেকে তথ্য সংগ্রহ করুন যা Authentication টোকেন ফর্ম্যাট অনুসরণ করে। এছাড়াও কাস্টম টোকেন গাইড দেখুন।
// 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 জন্য API পর্যালোচনা করুন।
- অন্যান্য প্রজেক্ট ম্যানেজমেন্ট অপারেশনের জন্য Firebase CLI এবং Google Cloud কনসোল ব্যবহার করুন, যেমন স্কিমা এবং সংযোগকারীগুলি পরিচালনা করা এবং পরিষেবা এবং ডেটাবেসগুলি পরিচালনা করা ।