از Admin SDK با Data Connect استفاده کنید، از Admin SDK با Data Connect استفاده کنید

Firebase Admin SDK مجموعه‌ای از کتابخانه‌های سرور است که به شما امکان می‌دهد از محیط‌های دارای امتیاز با Firebase تعامل داشته باشید تا اقداماتی مانند انجام پرس و جوها و جهش‌ها در سرویس Firebase Data Connect برای مدیریت داده‌های انبوه و سایر عملیات با امتیازات بالا و اعتبار جعل هویت انجام دهید.

Admin SDK یک API برای فراخوانی عملیات در هر دو حالت خواندن/نوشتن و فقط خواندنی در اختیار شما قرار می دهد. با عملیات فقط خواندنی، خیال شما را از اجرای توابع مدیریتی که نمی‌توانند داده‌ها را در پایگاه داده‌های شما تغییر دهند، دارید.

راه اندازی SDK مدیریت

برای شروع استفاده از با Firebase Data Connect در سرور خود، ابتدا باید Admin SDK برای Node.js نصب و راه‌اندازی کنید .

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 تنظیم کنید. در هر صورت، این امر از اجرای چنین عملیاتی از سوی کلاینت ها یا در زمینه های غیرمجاز دیگر جلوگیری می کند.

از SDK با شبیه ساز Data Connect استفاده کنید

در محیط‌های نمونه اولیه و آزمایش، انجام بذر داده‌ها و سایر عملیات روی داده‌های محلی می‌تواند مفید باشد. Admin SDK به شما امکان می دهد گردش کار خود را ساده کنید زیرا احراز هویت و مجوز برای جریان های محلی را نادیده می گیرد.

هنگامی که متغیر محیطی DATA_CONNECT_EMULATOR_HOST تنظیم شده باشد، Firebase Admin SDK به طور خودکار به شبیه ساز Data Connect متصل می شود:

export DATA_CONNECT_EMULATOR_HOST="127.0.0.1:9399"

برای اطلاعات بیشتر رجوع کنید به:

موارد استفاده رایج را اجرا کنید

Admin SDK برای عملیات ممتاز روی داده های حیاتی شما ارائه شده است.

API برای 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);

بعدش چی؟