ابرووا
شروع رایگان
☰ فهرست مستندات · SDK مدیریتی Node.js (سرور)

SDK مدیریتی (سرور)

نمایش Markdown
انتخاب پلتفرم:

ابرووا احراز هویت برای سرور شما، با همان نام‌های Firebase Admin SDK: setCustomUserClaims، getUser و revokeRefreshTokens. بسته‌ی @abrova/auth-admin برای Node.js، یا همان فراخوانی‌ها به صورت درخواست ساده‌ی HTTPS از هر زبانی.

فقط برای سرور شما.

SDK مدیریتی کاربران اپ شما را از سرور خودتان مدیریت می‌کند: claimهای سفارشی، اطلاعات حساب و نشست‌هایشان. از کلید سرور پروژه استفاده می‌کند، پس هیچ‌وقت در اپ یا مرورگر اجرا نمی‌شود. اپ‌ها کاربران را با SDKهای ابرووا احراز هویت وارد می‌کنند.

مرحله ۱: نصب#

بسته از مرکز ابرووا می‌آید. اسکوپ @abrova را در فایل .npmrc پروژه به رجیستری ابرووا وصل کنید:

.npmrcINI
@abrova:registry=https://center.abrova.ir/api/packages/abrova/npm/
bash
npm install @abrova/auth-admin

Node.js نسخه‌ی ۱۸ یا بالاتر لازم است و وابستگی دیگری ندارد.

مرحله ۲: راه‌اندازی#

سه متغیر محیطی روی سرورتان بگذارید. آن‌ها را در کنسول، بخش تنظیمات پروژه، پیدا می‌کنید:

متغیرمقدار
ABROVA_PROJECT_IDشناسه‌ی پروژه.
ABROVA_API_KEYکلید عمومی API (ab_live_...).
ABROVA_SERVER_SECRETکلید سرور (ab_srv_...). فقط روی سرور.
ts
import { initAdmin } from '@abrova/auth-admin';

const auth = initAdmin();

می‌توانید آن‌ها را در کد هم بدهید: initAdmin({ projectId, apiKey, serverSecret }).

setCustomUserClaims#

همه‌ی claimهای سفارشی کاربر را جایگزین می‌کند. null یا {} آن‌ها را پاک می‌کند. برای این‌که claim چه چیزی می‌تواند داشته باشد claimهای سفارشی را ببینید.

ts
await auth.setCustomUserClaims(userId, { plan: 'pro', teams: ['red'] });

getUser#

کاربر را با همان نام‌های UserRecord در Firebase برمی‌گرداند:

ts
const user = await auth.getUser(userId);
فیلدچیست
uidشناسه‌ی کاربر (ru_...).
email، emailVerifiedایمیل، اگر کاربر داشته باشد، و این‌که تأیید شده یا نه.
phoneNumberشماره تلفن ورود با تلگرام، یا null.
displayNameنام از ورود با Apple یا Google، یا null.
disabledوقتی کاربر در کنسول غیرفعال شده true است.
providerDataروش‌های ورود وصل‌شده، مثلاً [{ providerId: "google" }]. برای کاربر ناشناس خالی است.
metadatacreationTime، lastSignInTime و lastRefreshTime (آخرین تمدید نشست).
customClaimsclaimهای سفارشی؛ وقتی نباشد {} است.
tokensValidAfterTimeآخرین باری که همه‌ی نشست‌های کاربر تمام شد، یا null.
anonymousبرای کاربر ناشناس true است.

revokeRefreshTokens#

همه‌ی نشست‌های کاربر را روی همه‌ی دستگاه‌ها تمام می‌کند: دیگر هیچ تمدیدی کار نمی‌کند و کاربر باید دوباره وارد شود. access tokenهایی که قبلاً صادر شده‌اند تا انقضا، حداکثر یک ساعت بعد، کار می‌کنند.

ts
await auth.revokeRefreshTokens(userId);

خطاها#

هر خطا یک AbrovaAuthAdminError با code و status (کد HTTP) است:

کدHTTPمعنا
INVALID_CLAIMS400claimها یک قاعده را رعایت نمی‌کنند. پیام اولین مشکل را می‌گوید، مثلاً "claims.sub: not an allowed name".
USER_NOT_FOUND404چنین کاربری در این پروژه نیست.
UNAUTHENTICATED401کلید API یا کلید سرور اشتباه است، کلید پروژه‌ی دیگری است، یا آدرسی است که فهرست IPهای مجاز پروژه اجازه نمی‌دهد.
RATE_LIMITED429در یک دقیقه درخواست زیادی فرستاده شده. صبر کنید و دوباره امتحان کنید.
NETWORK-ابرووا احراز هویت در دسترس نبود.

بدون Node.js: REST API#

هر فراخوانی یک درخواست HTTPS به https://auth-users.abrova.ir با دو هدر x-api-key و x-server-secret است:

فراخوانیدرخواست
setCustomUserClaimsPUT /v1/projects/{projectId}/users/{userId}/custom-claims با بدنه‌ی { "claims": { ... } }
getUserGET /v1/projects/{projectId}/users/{userId}
revokeRefreshTokensPOST /v1/projects/{projectId}/users/{userId}/revoke-refresh-tokens
php
// PHP (Laravel)
Http::withHeaders([
    'x-api-key' => env('ABROVA_API_KEY'),
    'x-server-secret' => env('ABROVA_SERVER_SECRET'),
])->put("https://auth-users.abrova.ir/v1/projects/{$projectId}/users/{$userId}/custom-claims", [
    'claims' => ['plan' => 'pro'],
]);

خطاها به صورت JSON با همان code و یک message برمی‌گردند.

این صفحه مفید بود؟
گزارش مشکل

به‌روزرسانی: ۱۴ آبان ۱۴۰۵