Skip to Content
مستندات SDKPHPاحراز هویت

راهنمای احراز هویت

SDK از سه روش اصلی احراز هویت پشتیبانی می‌کند و تمام احراز هویت از طریق کلاس‌های احراز هویت که رابط BaseAuth را پیاده‌سازی می‌کنند، مدیریت می‌شود.

  • توکن دسترسی شخصی - برای برنامه‌های شخصی و اختصاصی
  • جریان کد مجوز - برای سناریوهای احراز هویت کاربر در پلتفرم‌های Third-Party
  • اعتبارنامه‌های کلاینت - برای برنامه‌های با ماهیت و دسترسی حقوقی

برای توضیحات بیشتر درمورد روش‌‌های احراز هویت به سند احراز هویت در API باسلام مراجعه کنید.

فهرست مطالب

توکن دسترسی شخصی

در توسعه برنامه‌های شخصی برای یک غرفه و کاربر، بعد از دریافت توکن دسترسی از پنل توسعه‌دهندگان ، می‌توانید مشخصات توکن دریافت شده را توسط PersonalToken مدیریت کنید.

<?php use Basalam\SDK\BasalamClient; use Basalam\SDK\Auth\PersonalToken; function personalTokenExample(): object { // مقداردهی اولیه با توکن‌های موجود $auth = new PersonalToken( token: 'your_access_token', refreshToken: 'your_refresh_token' ); // ایجاد کلاینت احراز هویت شده $client = new BasalamClient($auth); // دریافت اطلاعات کاربر جاری $user = $client->getCurrentUser(); return $user; }

جریان کد مجوز (برای احراز هویت کاربر)

در زمان پیاده‌سازی یک برنامه Third-Party که نیازمند دریافت مجوز و دسترسی از کاربران است، بعد از ساخت کلاینت برنامه در پنل توسعه‌دهندگان ، از طریق کلاس AuthorizationCode برای مدیریت فرآیند دریافت مجوز از کاربر اقدام کنید.

<?php use Basalam\SDK\BasalamClient; use Basalam\SDK\Auth\AuthorizationCode; use Basalam\SDK\Auth\Scope; // مرحله ۱: ایجاد شیء احراز هویت $auth = new AuthorizationCode( clientId: 'your-client-id', clientSecret: 'your-client-secret', redirectUri: 'https://your-app.com/callback', scopes: [ Scope::CUSTOMER_WALLET_READ, Scope::CUSTOMER_ORDER_READ ] ); // مرحله ۲: دریافت URL مجوز $authUrl = $auth->getAuthorizationUrl(state: 'optional_state_parameter'); echo "Visit: {$authUrl}\n"; // مرحله ۳: تبادل کد با توکن‌ها (بعد از دریافت کد از کاربر از آدرس برگشتی ثبت‌شده در کلاینت) $tokenInfo = $auth->getToken(code: 'authorization_code_from_callback'); // مرحله ۴: ایجاد کلاینت احراز هویت شده $client = new BasalamClient($auth);

مثال استفاده

<?php // مثال با استفاده از Laravel use Illuminate\Http\Request; use Illuminate\Support\Facades\Redirect; use Basalam\SDK\Auth\AuthorizationCode; class AuthController extends Controller { public function login() { $auth = new AuthorizationCode( clientId: 'your-client-id', clientSecret: 'your-client-secret', redirectUri: 'https://your-app.com/callback' ); $authUrl = $auth->getAuthorizationUrl(state: 'user_session_id'); return Redirect::to($authUrl); } public function callback(Request $request) { $code = $request->get('code'); $state = $request->get('state'); $auth = new AuthorizationCode( clientId: 'your-client-id', clientSecret: 'your-client-secret', redirectUri: 'https://your-app.com/callback' ); // تبادل کد با توکن‌ها $tokenInfo = $auth->getToken(code: $code); // ذخیره امن توکن‌ها // ... ذخیره $tokenInfo->accessToken, $tokenInfo->refreshToken return 'Authentication successful!'; } }

اعتبارنامه کلاینت

برای استفاده از APIهایی با ماهیت حقوقی مانند کیف پول، پس از احراز هویت کلاینت ساخته شده با grant_type="client_credentials" با استفاده از کلاس ClientCredentials برای استفاده از متدهای مربوطه اقدام کنید.

پیکربندی اولیه

<?php use Basalam\SDK\BasalamClient; use Basalam\SDK\Auth\ClientCredentials; use Basalam\SDK\Auth\Scope; // احراز هویت پایه $auth = new ClientCredentials( clientId: 'your-client-id', clientSecret: 'your-client-secret', scopes: [ Scope::CUSTOMER_WALLET_READ, Scope::VENDOR_PRODUCT_WRITE ] ); // ایجاد کلاینت $client = new BasalamClient($auth);

مثال استفاده

<?php function clientCredentialsExample(): object { $auth = new ClientCredentials( clientId: 'your-client-id', clientSecret: 'your-client-secret' ); $client = new BasalamClient($auth); // دریافت موجودی کاربر $balance = $client->getBalance(userId: 123); return $balance; }

مدیریت توکن

دریافت اطلاعات توکن

<?php function tokenManagementExample(): object { $auth = new ClientCredentials( clientId: 'your-client-id', clientSecret: 'your-client-secret' ); // دریافت توکن - اگر منقضی نشده باشد از توکن موجود استفاده می‌کند $tokenInfo = $auth->getToken(); return $tokenInfo; }

محدوده‌های دسترسی

محدوده‌های دسترسی تعریف می‌کنند که برنامه شما چه مجوزهایی دارد. علاوه بر سند دسترسی‌ها، در SDK نیز لیست دسترسی‌ها توسط کلاس Scope فراهم شده است. محدوده‌های موجود شامل:

<?php use Basalam\SDK\Auth\Scope; // محدوده‌های رایج Scope::CUSTOMER_WALLET_READ; // خواندن کیف پول مشتری Scope::CUSTOMER_WALLET_WRITE; // نوشتن در کیف پول مشتری Scope::VENDOR_PRODUCT_READ; // خواندن محصولات غرفه‌دار Scope::VENDOR_PRODUCT_WRITE; // نوشتن محصولات غرفه‌دار Scope::CUSTOMER_ORDER_READ; // خواندن سفارشات مشتری Scope::CUSTOMER_ORDER_WRITE; // نوشتن سفارشات مشتری

استفاده از محدوده‌ها

<?php use Basalam\SDK\Auth\ClientCredentials; use Basalam\SDK\Auth\Scope; $auth = new ClientCredentials( clientId: 'your-client-id', clientSecret: 'your-client-secret', scopes: [ Scope::CUSTOMER_WALLET_READ, Scope::VENDOR_PRODUCT_WRITE, Scope::CUSTOMER_ORDER_READ ] );
Last updated on